数据访问层策略

时间:2009-02-14 07:40:08

标签: c# nhibernate enterprise-library

我有一个关于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设计我们的数据访问层。那么你能指导我:

  1. 什么是优点&amp;这两种策略的缺点?
  2. 我们应该将NHibernate与MSEL结合起来吗?
  3. 我们应该使用MSEL来制定我们自己设计的基于ORM的策略吗?
  4. 或者您的技术架构师的其他策略?
  5. 请在这方面帮助我:哪种策略最好?或者提供任何其他策略。请提供理由。

1 个答案:

答案 0 :(得分:2)

这是一个相当广泛的问题,没有多大意义,因为它将苹果与橙子进行比较,但我会尝试回答其中的一些问题:

  1. NHibernate是一个ORM,MSEL是一组框架,这是两个最大的区别。 NHibernate只需要您创建一些POCO和xml文件来生成DAL。在MSEL中使用数据应用程序块时,您必须输入DAL的所有代码或使用第三方代码生成工具,如Code Smith

  2. 组合它们是可能的,但对于数据应用程序块可能是不必要的,你实际上只需要使用一个或另一个,NHib允许你执行存储过程,所以如果有什么你不能在c#中你可以随时将它移动到SP。对于MSEL中的其他块(加密,日志记录,异常等),您当然可以将它们与NHibernate一起使用。

  3. 设计你的ORM是一个非常糟糕的主意,除非你有一个能够正确完成它的庞大团队,即便如此,如果你缺少某些功能,我也会修改现有的开源ORM。

  4. 如果你负担得起,我会选择NHibernate或llblgen