企业图书馆的利弊

Muk*_*mar 7 c# asp.net enterprise-library data-access-layer

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

任何回复将受到高度赞赏.

Mar*_*man 5

另一个需要考虑的选择是实体框架4,因为它为您提供完整的ORM.使用最新的CTP 5代码,首先使用Entity Framework看起来非常有前景.

据说,只要您的SQL表列与ExecuteSprocAccessorExecuteSqlStringAccesor的对象属性匹配,Enterprise Library 5就会使数据访问变得微不足道.如果使用这两种扩展方法,您可以远离处理IDataRecord,IDataReader通常的命令对象和数据访问最终看起来像这样:

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

一些优点

  1. Enterprise Library确实提供了一个强大的框架,其中包括Unity(IoC),日志记录,验证,异常处理和策略注入等等.
  2. 各种应用程序块的大量文档和快速入门.
  3. 可扩展和可配置,几乎可以做任何事情.
  4. 在Ent Lib5中,引入了一个流畅的配置构建器来减轻来自山区配置部分的一些压力.

一些缺点

  1. 非常大的框架,您可能会发现自己需要引用2个以上的程序集才能使一个东西正常运行.

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

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

  • Re:装配件数量.4个程序集(Common,Data,ServiceLocator和Unity)真的那么多吗? (2认同)

And*_*rew 1

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

您可以从SourceForge下载最新版本。欲了解更多信息,您可以在HabaneroLabs注册和/或查看habanero wiki