我应该使用实体框架而不是原始ADO.NET

Art*_*mas 9 csla entity-framework

我是CSLA和实体框架的新手.我正在创建一个新的CSLA/Silverlight应用程序,它将取代已有12年历史的Win32 C++系统.旧系统使用自定义DCOM业务对象库并使用ODBC来访问SQL Server.新系统不会立即取代旧系统 - 它们必须在未来几年内与同一数据库共存.

起初我认为EF是最先进和最好的方式.在制作一个小型EF模型并且只有2个CSLA可编辑的根对象(我最终会有数百个对象,因为我的数据库有800多个表)时,我正在质疑EF的使用.

在当前的系统中,我需要多次对查询进行精细的细节性能调优,因为我可以100%控制生成的SQL.但是在EF看来,在幕后发生的这么多事情让我失去了控制权.像http://toomanylayers.blogspot.com/2009/01/entity-framework-and-linq-to-sql.html这样的文章并没有帮助我对EF的印象.

由于LINQ to EF,人们似乎喜欢EF,但由于我的标准在客户端和服务器之间作为标准对象传递,因此我似乎可以在没有LINQ的情况下轻松构建查询.我在WCF RIA中了解到有查询投影(或类似的东西)我可以做客户端LINQ,它在转换为实际SQL之前会移动到服务器,所以在这种情况下我可以看到EF的好处,但不是CSLA的好处.

如果我使用原始ADO.NET,我会在5年后后悔自己的决定吗?

最近有没有其他人做过这个选择,你走哪条路?

mar*_*c_s 7

在你的情况下,我仍然会选择EF而不是手工完成.

为什么?EF - 特别是在.NET 4中 - 已经相当成熟.与您必须手动编码数据访问代码相比,它将使您可以更轻松地完成大部分数据库操作,并且代码更少.

如果您确实需要绝对最大性能,您可以随时插入存储过程以进行插入,更新,删除,然后使用EF4而不是动态创建SQL语句的默认行为.

EF4有一个更好的存储过程集成,这真的打开了两全其美:

  • 在性能不是最重要的80%情况下,使用EF的高生产率
  • 为剩余的20%微调和手工存储过程并将其插入EF4

查看一些资源: