关于我的DAL层的建议,它有什么明显的问题吗?

时间:2009-12-04 13:24:09

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

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

公共类UserDAO:GenericDAO

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

然后我有一个工厂,IDAOFactory。

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

可能的改进: 1.就这样,我的网络应用程序不会乱丢:

IDAOFactory dbFactory = new NHibernateDAOFactory();

我在想创造:

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

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

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

2 个答案:

答案 0 :(得分:1)

您可以考虑使用DI容器,而不是希望只有一个地方({1}}工厂保护您免受进一步的更改。此外,调用工厂方法new有点令人困惑 - 为什么不调用它Load

答案 1 :(得分:0)

您将能够交换ORM实现的机会很小甚至没有。我会使用IoC容器(StructureMap)。定义Dao的接口,然后通过ioc容器将它们注入到您的服务中。