首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >混合NHibernate DAL/BLL

混合NHibernate DAL/BLL
EN

Stack Overflow用户
提问于 2009-01-08 17:19:12
回答 2查看 1.5K关注 0票数 1

我有一个现有的asp.net webforms项目,它使用微软的企业DAAB的DAL,我需要实现一些广泛的功能,我想使用NHibernate让事情变得更容易。

是否有任何设计模式/架构允许混合DAAB/NHibernate DAL?这是个好主意吗?

我的想法是:如果我有一个混合DAL,我仍然可以通过DAAB端传递高流量/非动态查询,并节省动态sql生成的开销。但是仍然可以使用nhibernate来处理更复杂的查询。

另外,为asp.net webforms应用程序设置NHibernate DAL/BLL的最佳方式是什么?我已经在NHibernate网站和其他几个网站上阅读了教程,在开始/结束nhib会话方面似乎没有达成共识。我只是在寻找最佳实践的例子。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-08 17:29:09

我听说过的一种方法是在与域模型交互时使用nHibernate。请记住,nHibernate可以调用存储过程,所以如果您想避免SQL生成,您可以这样做,但我建议您不要这样做。

如果你有不想创建自定义实体的报告或显示数据的查询,那么你可以使用DAAB,但如果你要创建你的实体,我不建议这么做。

至于最佳实践,我发现在需要的时候创建会话,然后将其存储在httpContext中,您将在每次请求时关闭会话。

然后唯一的另一件事是具体地创建和结束一个事务,如果您的逻辑将跨越多个服务,我将在您的服务层或应用层执行此操作(我将服务定义为高级代码,而不是but服务,而是将您的应用程序与域层隔离)。

比利·麦卡弗蒂的文章提供了一个很好的起点:http://www.codeproject.com/KB/architecture/NHibernateBestPractices.aspx

他的代码中有一个错误/限制,如果你使用他的方法,请查看我的博客文章:http://jberke.blogspot.com/2008/10/nhibernate-transaction-session-mgmt.html

票数 2
EN

Stack Overflow用户

发布于 2009-01-28 04:17:23

您有两个问题--您或版主应该将其一分为二: 1)同时使用DAAB和NHibernate的最佳方式是什么?

2)在Web Forms应用程序中设置NHibernate的最佳方法是什么?

我可以回答第二个问题,即在ASP.NET中使用HttpModule来配置每个请求的上下文。可以在这里找到一个示例模块:http://tinyurl.com/b5am9b

代码语言:javascript
复制
public class NHibernateSessionModule : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.EndRequest += new System.EventHandler(context_EndRequest);
        }

        void context_EndRequest(object sender, System.EventArgs e)
        {
            HybridSessionBuilder builder = new HybridSessionBuilder();
            ISession session = builder.GetExistingWebSession();
            if (session != null)
            {
                                Log.Debug(this, "Disposing of ISession " + session.GetHashCode());
                session.Dispose();
            }
        }

        public void Dispose()
        {

        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/425112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档