【发布时间】: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