2010年12月16日

CSLA中的连接管理器ConnectionManager

CSLA中实现了嵌套数据库连接时,使用一个数据库连接,看实例:

 

代码
 1 private string _conn = "连接字符串";
 2 private void InsertA()
 3 {
 4     using (var ctx = ConnectionManager<SqlConnection>.GetManager(_conn, false))
 5     {
 6         using (var cm = ctx.Connection.CreateCommand())
 7         {
 8             cm.CommandType = CommandType.Text;
 9             cm.CommandText = "insert into a values('01')";
10             cm.ExecuteNonQuery();
11         }
12         InsertB();
13     }
14 }
15 
16 private void InsertB()
17 {
18     using (var ctx = ConnectionManager<SqlConnection>.GetManager(_conn, false))
19     {
20         using (var cm = ctx.Connection.CreateCommand())
21         {
22             cm.CommandType = CommandType.Text;
23             cm.CommandText = "insert into b values('02')";
24             cm.ExecuteNonQuery();
25         }
26     }
27 }

 

 

 

 其中InsertB方法中创建连接时,会使用InsertA中创建的连接。

 实现原理:

1、在InsertA中创建连接mgr(连接变量名),在本地上下文LocalContext中保存此连接字符串,并且有个计数器mRefCount++为1,

2、在InsertB中创建连接时,在LocalContext中发现有此连接字符串,则使用忆存在的连接mgr,计数器mRefCount++为2。

3、在InsertB中Using块结束时,计数器mRefCount--为1

4、在InsertA中Using块结束时,计数器mRefCount--为0,销毁数据库连接,LocalContext中移除连接字符串。

 

posted @ 2010-12-16 10:35 白亚伟 阅读(1234) 评论(0) 编辑

导航

公告

 大家好,我叫白亚伟,现在成都一家科技公司做软件开发,06起从事信息化管理软件开发。目前致力于铁路信息化建设,关注用户业务,企业架构,正学习实践敏捷个人。

昵称:白亚伟
园龄:5年7个月
粉丝:6
关注:0

搜索

 
 

常用链接

随笔分类(38)

随笔档案(40)

博客园

站点收藏

积分与排名

  • 积分 - 19605
  • 排名 - 5213

最新评论

阅读排行榜

评论排行榜

推荐排行榜