最近一切直困扰于NHibernate的三层架构的搭建(windows 窗体应用程序,非web应用程序).
[界面层UI-->业务逻辑层BLL-->数据访问层DAL-->数据库]
对于NHibernate中session的构建始终无法搞好,主要是session的处理!!
a.session的一级缓存,NH的二级缓存如何使用b.如果UI中调用BLL中的某方法A,方法A操作完成后,关闭session,
UI此时还如何去用一级session的一级缓存和lazy load延迟加载c.三层架构如何去考虑缓存 和 延迟加载,求答案,求示例
[界面层UI-->业务逻辑层BLL-->数据访问层DAL-->数据库]
对于NHibernate中session的构建始终无法搞好,主要是session的处理!!
a.session的一级缓存,NH的二级缓存如何使用b.如果UI中调用BLL中的某方法A,方法A操作完成后,关闭session,
UI此时还如何去用一级session的一级缓存和lazy load延迟加载c.三层架构如何去考虑缓存 和 延迟加载,求答案,求示例
创建持久化映射文件
进行配置文件的设置
数据访问层
编写业务逻辑层
public void AddUser(User user)
{
UserDAL dal = new UserDAL();
dal.AddUser(user); }
NHibernate中Session是线程不安全的,而且每次数据库操作 请求创建Session时对性能有些影响。Web中可以通过将Session与用于请求HttpContext绑定实现线程安全,并且用户当前请求时只有一个Session
public void Set(ISession session)
{
if (session != null)
{
HttpContext.Current.Items.Add(SessionConfigManage.SessionSourceItemName, session);
}
else
{
HttpContext.Current.Items.Remove(SessionConfigManage.SessionSourceItemName);
}
}