企业图书馆的利弊

时间:2011-03-01 11:01:55

标签: c# asp.net enterprise-library data-access-layer

我正在开发一个复杂的业务应用程序,其中将有一个数据访问层。截至目前,我们有两个选择 - 要么创建我们自己的自定义数据访问层,要么使用Microsoft内置库。我正在寻找一些基本的理由来选择其中一种。

任何回复都将受到高度赞赏。

3 个答案:

答案 0 :(得分:5)

要考虑的另一个选择是Entity Framework 4,因为它会为您提供完整的ORM。加上最新的CTP 5 of code first with Entity Framework看起来很有希望。

据说,只要您的SQL表列与ExecuteSprocAccessorExecuteSqlStringAccesor的对象属性匹配,Enterprise Library 5确实可以使数据访问变得微不足道。如果您使用这两种扩展方法,则可以避免处理IDataRecordIDataReader和常用的命令对象,并且您的数据访问最终会如下所示:

var books = DataBase.ExecuteSqlStringAccessor("SELECT [Id], [Name], [ISBN] FROM Books", rowMapper).ToList();

有些优点

  1. 企业库确实提供了一个 强大的框架,包括 Unity(IoC),日志记录,验证, 异常处理和策略注入 仅举几例。
  2. 大量文档和快速 开始各种应用程序 块。
  3. 可扩展且可配置 几乎任何事情。
  4. 在Ent Lib5中引入了fluent configuration builder 减轻山区的压力 配置部分。
  5. 一些缺点

    1. 您可能会发现非常大的框架 你自己需要参考2+ 程序集得到一件事 功能正常。

    2. 潜在的配置噩梦, 但是使用流畅 配置构建器并更新 应用程序块配置编辑器 减少一些痛苦。

    3. 最后我使用Enterprise Library,因为它可以帮助我更快地构建应用程序,而且我不必重新发明轮子。最好的办法是尝试每一个,ADO.NET,EF4,Ent Lib5或许多其他选项,看看哪个感觉适合您的需求

答案 1 :(得分:2)

我当然不会推荐企业库。顾名思义,大多数子项目非常“企业化”,这意味着它们大多过度设计并需要大量的XML配置。除非您觉得有吸引力,否则可以提供更好的产品。

在滚动我自己的ORM以及使用大量不同的框架方面有一些过去的经验,我现在主要使用EF4(实体框架),因为它是内置的,因此即使在警惕的商店也很容易获得开源甚至商业第三方组件。

如果您正在使用现有数据库,EF提供了一种从该数据库生成起始实体模型的方法,您可以随后在可视化设计器中对其进行修改和同​​步。如果您没有数据库,或者您不喜欢设计人员并且不喜欢使用代码,那么Microsoft已经提供了一个CTP下载,它能够以“代码优先”的方式使用EF,其中数据库映射以代码表示。随后可以使用定义的类生成数据库。

如果您愿意使用开源,NHibernate是一个优秀且成熟的选择,具有良好的第三方支持(视觉地图设计师,剖析器等)。

我几乎忘了提到在任何情况下都不应该推出自己的数据库访问框架。考虑到此特定功能可用的丰富选项,请花时间编写应用程序的内容而不是HOW。

答案 2 :(得分:1)

如果您正在使用ORM(对象关系映射器),请查看Habanero。这是一个开源项目,允许您从数据库构建完整域或反向工程域。它有一点学习曲线,但有很好的支持和一些额外的工具来支持它。 FireStarter Modeller就是这样一个工具,它为您提供了一个Windows界面,用于构建域对象或从数据库对它们进行逆向工程。

您可以从SourceForge下载最新版本。有关详细信息,您可以在HabaneroLabs注册和/或查看the habanero wiki