【问题标题】:Common nhibernate data access project for MVC3 and SOA projectMVC3 和 SOA 项目的常用 nhibernate 数据访问项目
【发布时间】:2012-02-13 20:07:15
【问题描述】:

我目前正在 Visual Studio 中开发一个解决方案,我将在 Windows azure 上部署该解决方案。该解决方案包含一个 MVC3 Web 角色,其中表示来自 SQL Server 的数据。 我已经设置了 Ninject 和 Fluent NHibernate 来将视图与数据库和具体实现分离。

我现在想做的是将所有数据访问逻辑(即 NHibernate 以及用于数据访问的存储库)放入一个单独的 c# 项目中,以便我可以将该项目用于 MVC3 项目和未来SOA 项目。

任何想法我可以如何实现这一目标?我想出了如何使用“仅代码”类来做到这一点,但是在使用 hibernate 时会出现一些问题。我猜它与 global.asx 中为每个 Web 请求创建的 ISession 对象有关。

任何关于简单实现、场景或操作方法的提示都会非常有帮助。如果需要,我也可以发布代码 - 让我知道详细的部分;-)

问候, 马丁

【问题讨论】:

  • 正如我在很多其他时候所做的那样,我建议采用分层方法,其中只有 DAL 知道底层 ORM 和数据库技术。在这里查看我的答案:stackoverflow.com/a/7474357/559144 如果你想使用 NHibernate,它基本上保持不变,除了用 NH 替换 EF 并且如果你需要处理 Session 你可以有一个服务层,它将逻辑和服务器封装到 MVC 和 SOA 项目条目指向业务逻辑。

标签: c# asp.net asp.net-mvc-3 nhibernate fluent-nhibernate


【解决方案1】:

如果我理解正确,我认为实现 Service 类库不会有问题,该类库从 UI 或 SOA 层获取请求并执行它们。例如-

public class UsersService
        {
            private ISession _Session;

            // Session is injected 
            public UsersService(ISession session)
            {
                _Session = session;
            }

            public IEnumerable<User> GetAllUsers()
            {
                return _Session.QueryOver<User>().List();
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多