【问题标题】:advice on my DAL layer, any obvious issues with it?关于我的 DAL 层的建议,有什么明显的问题吗?
【发布时间】:2010-12-23 05:54:45
【问题描述】:

我正在使用 nHibernate。 我的课程是 POCO,它与我的数据库表 1:1 映射。 我创建了一个 IGenericDAO -> GenericDAO 来完成我所有的基本 CRUD。 (存储库) 每个表都有一个 DAO 类,所以:

公共类 UserDAO : GenericDAO

任何特定于表的查询都将放在 tableDAO 类中。

然后我有一个工厂,IDAOFactory。

public class NHibernateDAOFactory : IDAOFactory
{
   public static UserDAO GetUserDAO()
   {
        return new UserDAO();
   }
}

可能的改进: 1. 以免我的 Web 应用程序乱七八糟:

IDAOFactory dbFactory = new NHibernateDAOFactory();

我正在考虑创建:

public class DAOFactoryFactory
{
      public static IDAOFactory Load()
      {
         return new NHibernateDAOFactory();
      }
}

这样我就可以在需要交换数据库层的情况下进行单点更改。 (即在 linq2sql 和 nhibernate 之间切换,但不确定在现实中是否可行)

关于如何改进这一点的任何建议/指示,或者这非常可靠?

【问题讨论】:

  • 您认为您到底为什么需要更换 ORM?

标签: c# asp.net nhibernate oop data-access-layer


【解决方案1】:

您可能会考虑使用 DI 容器,而不是希望只有一个 new 工厂可以保护您免受进一步更改。另外,调用工厂方法Load 有点令人困惑——为什么不改为CreateDAO

【讨论】:

    【解决方案2】:

    您能够交换 ORM 实现的可能性微乎其微。我会使用 IoC 容器(StructureMap)。为你的 Dao 定义接口,然后通过 ioc 容器将它们注入你的服务中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多