NHibernate 配置文件的处理和使用多数据库的多层架构思路(补充部分二)

第二种情况:多线程,比如.Net Remoting。
        我现在就是遇见 Net Remoting,才迫使我写这些东西的!每活动的个线程维护一个 session 。 自然就提到了这个属性:System.ThreadStaticAttribute,MSDN是这样描述的:用 ThreadStaticAttribute 标记的 static 字段不在线程之间共享。每个执行线程都有单独的字段实例,并且独立地设置及获取该字段的值。如果在不同的线程中访问该字段,则该字段将包含不同的值。不要为标记为 ThreadStaticAttribute 的字段指定初始值,因为这样的初始化只会发生一次,因此在类构造函数执行时只会影响一个线程。在不指定初始值的情况下,如果它是值类型,可依赖初始化为其默认值的字段,如果它是引用类型,则可依赖初始化为空引用的字段。

        那就不多说了,直接把(一)中底层的两个修改后的类 贴上来,它们是可以在多线程环境下运行的!   CommonDatabaseOperation类没有任何变化!
         EntityControl 类仅修改各个方法中的session 的重新连接和断开!  代码如下:

// -----------------------------------------------------------------------------------------
//  模块编号:
//  文件名: EntityControl.cs
//  描述: EntityControl 实体类
//  作者:ChenJie 
//  编写日期:2007-5-11
//  Copyright 2007
// -----------------------------------------------------------------------------------------
using  System;
using  System.Reflection;
using  System.Collections;
using  System.Collections.Generic;
using  System.Text;
using  System.Data;
using  NHibernate;
using  NHibernate.Cfg;
using  NHibernate.Expression;
using  NHibernate.Engine;
using  NHibernate.SqlTypes;
using  NHibernate.SqlCommand;

namespace  Novelty.CustomSystem.NHibernateOperation.NHibernateModule
{
    
/// <summary>
    
/// 实体通用操作类
    
/// </summary>

    public class EntityControl<T>
    
{
        
私有变量

        
内部成员变量

        
构造函数

        
属性

        
方法
    }

}


      SessionFactory 类改动较大,毕竟就是靠它的对象来为每个线程提供 session.

// -----------------------------------------------------------------------------------------
//  模块编号:
//  文件名: SessionFactory.cs
//  描述: SessionFactory 类
//  作者:ChenJie 
//  编写日期:2007-5-11
//  Copyright 2007
// -----------------------------------------------------------------------------------------
using  System;
using  System.Collections;
using  System.Collections.Generic;
using  System.Reflection;
using  System.Data;
using  NHibernate;
using  NHibernate.Cfg;
using  NHibernate.Tool.hbm2ddl;

namespace  Novelty.CustomSystem.NHibernateOperation.NHibernateModule
{
    
/// <summary>
    
/// Session的创建类,属于单件模式(Singleton Pattern)
    
/// 一个数据库对应一个持久层项目,所以用对应的持久层项目的程序集名称来标识各自的ISessionFactory,Configuration,ISession各个类的对象
    
/// </summary>

    public sealed class SessionFactory
    
{
        
私有变量

        
构造函数

        
嵌套类

        
属性

        
实现公有方法

        
实现私有方法
    }

}

补充就结束了!
其它四部分地址:
NHibernate 配置文件的处理和使用多数据库的多层架构思路(第一部分)
http://blog.csdn.net/scucj/archive/2007/05/16/1610858.aspx
NHibernate 配置文件的处理和使用多数据库的多层架构思路(第二部分)
http://blog.csdn.net/scucj/archive/2007/05/16/1610860.aspx
NHibernate 配置文件的处理和使用多数据库的多层架构思路(第三部分)
http://blog.csdn.net/scucj/archive/2007/05/16/1610861.aspx
NHibernate 配置文件的处理和使用多数据库的多层架构思路(补充部分一)
http://blog.csdn.net/scucj/archive/2007/05/16/1612322.aspx

参考资料:
(1) NHibernate的Session管理
http://blog.csdn.net/thebesghost/archive/2006/08/23/1107151.aspx
(2)多线程下WinForm开发应该注意哪些问题?
http://www.cnblogs.com/Cajon/archive/2007/03/21/Multi_Thread_Win_Form.html
(3)NHibernate.Helper Project:
http://blogs.intesoft.net/simon/articles/16.aspx

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值