我有一个关于Microsoft的企业库数据访问应用程序块和NHibernate的查询 .
我们正处于我们的反洗钱软件的设计阶段 .
标准如下:
我们的客户类包含一对多关系的帐户类 . 模型如下:客户1-> M账户
类定义如下:
class Customer
{
private:
int CustomerID;
string CustomerName;
List<string> Addresses;
List<Account> accounts;
}
class Account
{
private:
long AccountNumber;
List<Transaction> transactions;
Customer customer;
}
表定义如下:
Table Customer
{
int CustomerID;
string CustomerName;
}
Table CustomerAddress
{
int CustomerID;
int Seqn;
string Address;
}
Table Account
{
long AccountNumber;
int CustomerID;
}
我们决定使用MSEL或NHibernate设计我们的数据访问层 . 所以你能指导我:
-
这两种策略的优点和缺点是什么?
-
我们应该将NHibernate与MSEL结合起来吗?
-
我们应该采用MSEL设计的基于ORM的策略吗?
-
或者您技术架构师的其他策略?
请帮助我这方面:哪种策略最好?或者提供任何其他策略 . 请给出你的理由 .
1 回答
这是一个相当广泛的问题,没有多大意义,因为它将苹果与橙子进行比较,但我会尝试回答其中的一些问题:
NHibernate是一个ORM,MSEL是一组框架,这些是2个最大的区别 . NHibernate只需要您创建一些POCO和xml文件来生成DAL . 在MSEL中使用数据应用程序块时,您必须输入DAL的所有代码或使用第Code Smith等第三方代码生成工具 .
组合它们是可能的,但对于数据应用程序块可能是不必要的,你应该只需要使用其中一个,NHib允许你执行存储过程,所以如果你在c#本身做不到的事情你可以随时将其移动到SP . 至于MSEL中的其他块(加密,日志记录,异常等),您当然可以将它们与NHibernate一起使用 .
设计你的ORM是一个非常糟糕的主意,除非你有一个能够正确完成它的庞大团队,即便如此,如果你缺少某些功能,我也会修改现有的开源ORM .
如果你负担得起,我会选择NHibernate或llblgen .