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等) 对象 ...
随机推荐
- 解决ASP.NET MVC AllowAnonymous属性无效导致无法匿名访问控制器的问题
在ASP.NET MVC项目中,一般都要使用身份验证和权限控制,但总有部分网页是可以匿名访问的.使用AllowAnonymous属性就可以指定需要匿名访问的控制器,从而跳过身份验证. 但是今天却遇到一 ...
- android学习——ADT的离线安装
前一篇讲解了ADT的在线安装,不过有的时候在线在线安装的速度很慢.所以今天学习一下ADT的离线安装: 首先 下载与SDK相对应的ADT(如果SDK是最新版的就下最新版ADT否则就把SDK更新到最新版以 ...
- HDOJ/HDU 2352 Verdis Quo(罗马数字与10进制数的转换)
Problem Description The Romans used letters from their Latin alphabet to represent each of the seven ...
- Minimum Window Substring &&& Longest Substring Without Repeating Characters 快慢指针,都不会退,用hashmap或者其他结构保证
1 public class Solution { public static int lengthOfLongestSubstring(String s) { char[] arr = s.toCh ...
- dell vfoglight
vFoglight针对RH/Vmware/Hyper-v/Vsphere环境的相关软件包下载链接 https://software.dell.com/register/getfile/?param=2 ...
- linux下avr单片机开发:中断服务程序
不管是什么单片机程序,中断总是非常重要的一部分 ,linux 下的avr开发,主要是依靠avr-gcc,以及avr-libc,它们对中断程序的格式要求,与window下的icc-avr以及win-av ...
- 用jQuery实现优酷首页轮播图
▓▓▓▓▓▓ 大致介绍 看到了一个轮播图的思路,就想的自己动手实践一下,总体来说用jQuery实现起来简单多了 如果对代码中使用的方法有疑问,可以参考我的jQuery学习之路(持续更新),里面有讲解: ...
- Android——打造万能适配器(CommonAdapter)
List<T> : ListView -> Adapter extends BaseAdapter -> ViewHolder ViewHolder CommonAdaper ...
- 非常棒的jqChart图表插件
由于项目需要,做一些类似于OA系统的应用时,表格用到的是最多的,那么图表展示就先显得尤为的重要,其中柱柱状图.折线图.饼状图又居多. 之前一直使用的是Chrome下的googleAPI中提供的char ...
- (转)BAT及各大互联网公司2014前端笔试面试题--Html,Css篇
BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 很多面试题是我自己面试BAT亲身经历碰到的.整理分享出来希望更多的前端er共同进步吧,不仅适用于求职者,对于巩固复习前端基础更是 ...