LINQ数据库连接对象制造工厂
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq;
using System.Threading;
namespace Data
{
/// <summary>
/// LINQ数据库连接对象制造工厂
/// </summary>
static internal class DataContextFactory
{
static System.Timers.Timer sysTimer = new System.Timers.Timer(10000);
volatile static Dictionary<Thread, DataContext[]> divDataContext = new Dictionary<Thread, DataContext[]>();
static public int DataContextCount { get { return divDataContext.Count; } }
static DataContextFactory()
{
sysTimer.AutoReset = true;
sysTimer.Enabled = true;
sysTimer.Elapsed += new System.Timers.ElapsedEventHandler(sysTimer_Elapsed);
sysTimer.Start();
}
static void sysTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
List<Thread> list = new List<Thread>();
foreach (Thread item in divDataContext.Keys)
{
if (item.ThreadState == ThreadState.Stopped)
{
list.Add(item);
}
}
for (int index = 0; index < list.Count; index++)
{
divDataContext.Remove(list[index]);
list[index] = null;
}
list = null;
}
/// <summary>
/// 通过工厂的制造模式获取相应的LINQ数据库连接对象
/// </summary>
/// <param name="dbName">数据库名称(需要与真实数据库名称保持一致)</param>
/// <returns>LINQ数据库连接对象</returns>
public static DataContext Intance(string dbName)
{
return Intance(dbName, Thread.CurrentThread);
}
/// <summary>
/// 通过工厂的制造模式获取相应的LINQ数据库连接对象
/// </summary>
/// <param name="dbName">数据库名称(需要与真实数据库名称保持一致)</param>
/// <param name="thread">当前线程引用的对象</param>
/// <returns>LINQ数据库连接对象</returns>
public static DataContext Intance(string dbName, Thread thread)
{
if (!divDataContext.Keys.Contains(thread))
{
divDataContext.Add(thread, new DataContext[4]);
}
if (dbName.Equals("zzl"))
{
if (divDataContext[thread][0] == null)
{
divDataContext[thread][0] = new Data.LinqzzlDataContext();
}
return divDataContext[thread][0];
}
else
{
return null;
}
}
}
}
LINQ数据库连接对象制造工厂的更多相关文章
- 重构版机房收费系统之分层、接口、数据库连接、反射+工厂(vb.net)
分层 分层是为了减少层与层之间的依赖,添加程序的可读性,让整个系统结构清晰明白.还可大大减少维护成本,可是分层也有一定的缺点,有些能够直接訪问数据库的层,却要通过负责訪问数据库的层进行訪问.这样,在訪 ...
- 获取数据库连接对象Connection
2018-11-04 19:50:52 开始写 public Connection getConn() {//返回类型为Connection try { Class.forName("co ...
- 获取数据库连接对象(线程ThreadLocal)
/** * 负责数据库连接定义的程序类 * 该类可以负责所有操作线程的数据库连接,利用get()方法可以获得连接对象 */ public class DatabaseConnection { priv ...
- JDBCToolsV2:利用ThreadLocal保证当前线程操作同一个数据库连接对象。
JDBCToolsV2: 利用ThreadLocal保证当前线程操作同一个数据库连接对象. package com.dgd.test; import com.alibaba.druid.poo ...
- JDBC——Connection数据库连接对象
功能 1.获取执行SQL的对象 方法:createStatement() 用于创建向数据库发送SQL语句的一个对象.修饰/返回值类型:Statement(声明) 方法:prepareStatement ...
- 数据库学习任务二:数据库连接对象SqlConnection
数据库应用程序的开发流程一般主要分为以下几个步骤: 创建数据库 使用Connection对象连接数据库 使用Command对象对数据源执行SQL命令并返回数据 使用DataReader和DataSet ...
- 《LINQ技术详解C#》-4.LINQ到对象
public static string[] Presidents { get; } = { "Adams", "Arthur", "Buchanan ...
- Linq复杂对象查询
复杂的查询对象, using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- js面向对象(对象/类/工厂模式/构造函数/公有和原型)
https://www.cnblogs.com/sandraryan/ 什么是对象 js中一切都是对象(有行为和特征).js允许自定义对象,也提供了内建对象(string date math等) 对象 ...
随机推荐
- 【转】android-support-v7-appcompat.jar 的安装及相关问题解决 --- 汇总整理
原文网址:http://tdppro.blog.51cto.com/749956/1388853 1.DownLoading the Support Libraries 1)Start the And ...
- Makefile 自动生成依赖
虽然以前对Makefile有个基本概念,但是真正到自己去写一个哪怕是简单的Makefile时也会遇到不少的麻烦. 现在我有如下文件 dList.h dList.c memory.c debug. ...
- (转载)SQL联合查询中的关键语法
(转载)http://www.cnblogs.com/zhangliyu/archive/2009/03/21/1418215.html 联合查询效率较高.以下例子来说明联合查询的好处 t1表结构(用 ...
- (转载)Linux上iptables防火墙的基本应用教程
(转载)http://www.vpser.net/security/linux-iptables.html iptables是Linux上常用的防火墙软件,下面vps侦探给大家说一下iptables的 ...
- 理解c++11正则表达式 (1)
概要 C++11提出了正则表达式这个概念,只需在头文件中包含#include<regex>即可.我们可以完成: Match 将整个输入拿来比对匹配某个正则表达式 Search 查找与正则表 ...
- EF-CodeFirst-表关系-延迟/贪婪加载
表关系建立: http://blog.csdn.net/niewq/article/details/17232321 一对多: namespace LckLib.EF.V6.Models { publ ...
- Java编程常见问题汇总
每天在写Java程序,其实里面有一些细节大家可能没怎么注意,这不,有人总结了一个我们编程中常见的问题.虽然一般没有什么大问题,但是最好别这样做.另外这里提到的很多问题其实可以通过Findbugs( h ...
- Shell函数参数
在Shell中,调用函数时可以向其传递参数.在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数... 带参数的函数示例: #!/bin/bash funWit ...
- Maven source jar get
Maven作为项目管理的包,同时也能方便的将source-jar下载的本地,省去了每次到网上分别下载的问题. Maven下载Jar包同时下载源文件和文档 示例,在maven生成的工程里面:mvn ec ...
- mdk编译遇见的错误(LX4F120H),望各位指点迷津
程序如下 #define tBoolean int#define GPIO_PORTA_BASE g_pulGPIOBaseAddrs[0]#include "lib/gpio.h" ...