我刚接触CSLA和Entity Framework。我正在创建一个新的CSLA / Silverlight应用程序,以替换一个12年前的Win32 C ++系统。旧系统使用自定义DCOM业务对象库,并使用ODBC连接到SQL Server。新系统将不会立即替换旧系统 - 它们必须在未来几年同时存在于同一数据库中。
起初,我认为EF是最好的选择,因为它是最新的技术。但是当我创建了一个小的EF模型和仅有两个CSLA可编辑的根对象时(最终我将拥有数百个对象,因为我的数据库有800多个表),我严重质疑使用EF的决定。
在当前系统中,我需要经常对查询进行详细的性能调整,这样我就可以控制所有生成的SQL语句。但是,在EF中似乎发生了太多的事情,导致我失去了这种控制。像 http://toomanylayers.blogspot.com/2009/01/entity-framework-and-linq-to-sql.html 这样的文章并没有改变我的看法。
人们似乎喜欢EF是因为LINQ to EF,但由于我的标准是将客户端和服务器之间传递的条件对象,我似乎可以不使用LINQ也能轻松构建查询。我了解到在WCF RIA中有查询投影(或类似的内容),在那种情况下,我可以在客户端使用LINQ并将其转换为实际SQL之前移动到服务器,所以在那种情况下我可以看到EF的好处,但在CSLA中不行。
如果我使用原始的ADO.NET,5年后会后悔吗?
最近有其他人做出了这个选择,他们选择了哪一边?