需要建议:从Linq to SQL转换到Entity Framework

4
我了解linq to sql和entity framework之间的高级区别,但我希望得到来自已经进行过转换或具有足够经验的其他人的建议。作为一个从linq to sql背景强大的人来说,就实现和低级细节而言,在开始使用entity framework编写新的数据访问层项目时,有哪些重要的事情需要知道?
我已经创建了我的edmx文件(我选择了数据库优先方法),到目前为止一切都看起来与linq to sql非常相似。对我有帮助的是一个简短的清单,比如,在linq to sql中,您会以[这种方式]做[这个],但在entity framework中,您会想以[这种方式]进行操作。
如果这是一个奇怪的问题,那么请原谅,但任何回答的尝试将不胜感激。谢谢!

虽然NH更成熟,功能集也更丰富,但仅仅说“使用NH”并不能帮助OP。 - Jason Meckley
2
可能是这个问题的重复:https://dev59.com/ZHVD5IYBdhLWcg3wWKPc - Strillo
我认为在EF4中没有根本性的不同 - 你可以像在Linq-to-SQL中一样去做你的事情。EF4将提供额外的功能(例如表继承场景,将一个对象映射到多个表或将一个表映射到多个对象类型) - 但这些都是“附加功能”,不会真正妨碍你。 - marc_s
2个回答

1
在L2S和EF之间的新项目中,我建议使用EF(考虑Entity Framework 4.0或更高版本,不要使用早期的EF版本)。
虽然Linq to SQL是一种类到表映射,但EF 4是一个完整的ORM(对象关系映射)工具,具有不同的映射场景。
使用EF,您有很多灵活性:
  • 数据库优先方法
  • 模型优先方法
  • 代码优先方法
并且与LINQ提供程序强烈集成。
使用Linq2SQL进行单元测试是一场噩梦。使用EF,您可以直接获得POCO(Plain Old CLR Object)类。在L2S中,实体类与L2S命名空间紧密耦合。
EF还可以帮助您处理领域驱动设计方案。
微软现在认为EF是第一种数据库访问方法,并且它是其他服务(如RIA服务或MVC数据库脚手架)的基础。
LinqToSql现在仅在Windows Phone场景中是第一种数据库访问方法。

“第一个数据库访问方法”是什么意思?显然,这两种技术都不是最早出现的。 - M.Babcock
抱歉我的英文不好...我的意思是在数据库访问技术集合中(ADO.NET,LinqToSql,EF),EF是微软首选的,并且他们的努力集中在它上面。 - Be.St.

0
NH更好...但是由于EF是微软的产品,随着时间的推移它也会不断发展。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接