我是 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 年后后悔我的决定吗?
最近有没有其他人做出这个选择,你选择了哪条路?