Entity framework 我应该使用实体框架而不是原始ADO.NET吗
我不熟悉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年后我会后悔我的决定吗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的使用提出了严重的质疑 在当前系统中,我需要多次对
最近有没有其他人做过这样的选择?你选择了哪条路?在你的情况下,我仍然会选择EF而不是手工操作 为什么??EF——特别是在.NET4中——已经相当成熟。与手工编写数据访问代码相比,它将使您能够更轻松地执行大多数数据库操作,并且代码也更少 在需要绝对最大性能的情况下,您始终可以插入存储过程以进行insert、update和delete,EF4将使用这些存储过程,而不是动态创建SQL语句的默认行为 EF4有一个更好的存储过程集成,这真的打开了两个世界中最好的:
- 在性能不重要的80%情况下,使用EF的高生产率
- 对剩余的20%进行微调和手工存储,并将其插入EF4
没有简单的解决办法。我会在你的项目中选择一个需要你一天左右才能完成的功能。尝试不同的方法(原始sql、EF、EF+存储过程),看看哪些方法有效 客观地看一下CSLA——调用“DataPortal”并检查调用堆栈 接下来,将这些类放在CI构建服务器上,该服务器存储运行时数据并提供一系列运行的散点图 接下来,看看创建的代码。问问自己,在依赖静态创建者和受保护/私有构造函数的类中,如何使用依赖注入之类的东西 接下来,看看“CSLA”类承担了多少责任
最后问问自己,在每个环境中使用不同的构造函数创建对象是否有意义,并问问自己如何对这些对象进行单元测试。好问题。。。我正要问一个非常相似的问题。我一直在想EF相对于ADO.NET的速度和控制有什么优势……你似乎不喜欢CSLA,因为一些合理的原因,而在我的例子中,有些不太合理。对于具有以下特性的总线obj框架,您有何建议:Silverlight和.NET(WebForms、WinForms、WPF、自定义SOA)的可用性、服务器端和客户端规则(用户可配置和硬编码)、用户可配置的每个属性/每个CRUD安全控制、用户可配置的每个属性默认字段值,以及各种n层部署,以在不同的客户环境中工作。我需要所有这些和更多。我正在构建一个应用程序,而不是一个框架,我不想再创造任何东西。建议?谢谢。我不知道你说的“不喜欢csla”是什么意思。代码就是代码。我认为你最初的问题是关于csla和EF的,但你要求的措辞表明你已经将问题与csla的方言相适应。