Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 我应该使用实体框架而不是原始ADO.NET吗_Entity Framework_Csla - Fatal编程技术网

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

Entity framework 我应该使用实体框架而不是原始ADO.NET吗,entity-framework,csla,Entity Framework,Csla,我不熟悉CSLA和实体框架。我正在创建一个新的CSLA/Silverlight应用程序,它将取代一个12年历史的Win32 C++系统。旧系统使用自定义DCOM业务对象库,并使用ODBC访问SQL Server。新系统不会立即取代旧系统——它们必须在未来数年内与同一数据库共存 起初,我认为EF是一个不错的选择,因为它是最新最棒的。在制作了一个小的EF模型和两个CSLA可编辑的根对象(我最终会有数百个对象,因为我的DB有800多个表)之后,我对EF的使用提出了严重的质疑 在当前系统中,我需要多次对

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

起初,我认为EF是一个不错的选择,因为它是最新最棒的。在制作了一个小的EF模型和两个CSLA可编辑的根对象(我最终会有数百个对象,因为我的DB有800多个表)之后,我对EF的使用提出了严重的质疑

在当前系统中,我需要多次对查询进行详细的性能调优,因为我可以100%控制生成的SQL。但在英孚看来,幕后发生的事情太多了,以至于我失去了控制。像这样的文章无助于我对英孚的印象

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

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


最近有没有其他人做过这样的选择?你选择了哪条路?

在你的情况下,我仍然会选择EF而不是手工操作

为什么??EF——特别是在.NET4中——已经相当成熟。与手工编写数据访问代码相比,它将使您能够更轻松地执行大多数数据库操作,并且代码也更少

在需要绝对最大性能的情况下,您始终可以插入存储过程以进行insert、update和delete,EF4将使用这些存储过程,而不是动态创建SQL语句的默认行为

EF4有一个更好的存储过程集成,这真的打开了两个世界中最好的:

  • 在性能不重要的80%情况下,使用EF的高生产率
  • 对剩余的20%进行微调和手工存储,并将其插入EF4
请参阅一些参考资料:


您似乎既有需求又有解决方案

我通常用一个基本的、很好拥有的,而不是基本的来评价每个要求。然后看看什么有效

我同意你所说的,你可以两全其美

我想说的另一件事是,如果这个解决方案将在未来5年内出现,您是否考虑过单元测试

关于如何使用EF进行设置,有很多详细信息。(我个人避免使用ADO.Net,因为关注点的分离对于单元测试来说非常复杂。)


没有简单的解决办法。我会在你的项目中选择一个需要你一天左右才能完成的功能。尝试不同的方法(原始sql、EF、EF+存储过程),看看哪些方法有效

客观地看一下CSLA——调用“DataPortal”并检查调用堆栈

接下来,将这些类放在CI构建服务器上,该服务器存储运行时数据并提供一系列运行的散点图

接下来,看看创建的代码。问问自己,在依赖静态创建者和受保护/私有构造函数的类中,如何使用依赖注入之类的东西

接下来,看看“CSLA”类承担了多少责任


最后问问自己,在每个环境中使用不同的构造函数创建对象是否有意义,并问问自己如何对这些对象进行单元测试。

好问题。。。我正要问一个非常相似的问题。我一直在想EF相对于ADO.NET的速度和控制有什么优势……你似乎不喜欢CSLA,因为一些合理的原因,而在我的例子中,有些不太合理。对于具有以下特性的总线obj框架,您有何建议:Silverlight和.NET(WebForms、WinForms、WPF、自定义SOA)的可用性、服务器端和客户端规则(用户可配置和硬编码)、用户可配置的每个属性/每个CRUD安全控制、用户可配置的每个属性默认字段值,以及各种n层部署,以在不同的客户环境中工作。我需要所有这些和更多。我正在构建一个应用程序,而不是一个框架,我不想再创造任何东西。建议?谢谢。我不知道你说的“不喜欢csla”是什么意思。代码就是代码。我认为你最初的问题是关于csla和EF的,但你要求的措辞表明你已经将问题与csla的方言相适应。