183

我已经编程了一段时间并且之前使用过 LINQ-To-SQL 和 LINQ-To-Entities(尽管在使用实体时它一直处于实体/表 1-1 关系上——即与 L2SQL 没有太大区别)

我一直在阅读有关控制反转、工作单元、POCO 和存储库模式的大量信息,并希望在我的新应用程序中使用这种方法。

我正在努力寻找一个清晰、简洁的 EF4 初学者指南,它不假定您了解 EF1。

我需要回答的具体问题是:

代码优先/模型优先?关于 EF4 的优缺点(即,如果我先编写代码,稍后更改代码并需要重新生成我的数据库模型,会发生什么情况 - 数据是否得到保留、转换或删除?)

假设我要先编写代码(我想看看 EF4 如何将其转换为 DB 模式),我该如何真正开始?我经常看到带有实体图的文章说“所以这是我的实体模型,现在我要......” - 不幸的是,我不清楚他们是否在设计器中创建了模型,将其保存到生成代码然后停止任何进一步的自动代码生成 - 或者 - 他们已经编码(POCO)?类并以某种方式将它们导入设计者视图?

我想我真正需要的是了解“魔法”的来源以及如何自己添加它,如果我不只是直接从数据库生成 EF 模型。

我知道这个问题有点含糊,但我不知道我不知道什么 - 所以任何输入/更正/澄清都值得赞赏。

不用说,我不希望有人坐在这里教我 EF - 我只是想要一些好的教程/论坛/博客/等等。对于完整的实体新手

4

12 回答 12

56

这些文章可能很有趣……该系列文章真正探讨了 POCO 方法的优缺点。

http://blogs.msdn.com/b/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx

http://blogs.msdn.com/b/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types-deferred-loading-and-explicit-loading。 aspx

http://blogs.msdn.com/b/adonet/archive/2009/06/10/poco-in-the-entity-framework-part-3-change-tracking-with-poco.aspx

在这些文章中,作者提到了未来的文章,这些文章描述了实现存储库和工作单元模式的最佳实践,但我找不到它们。这些文章写得很好,我想从这位作者那里读到更多。

于 2010-06-10T04:22:13.543 回答
11

我遇到过这个:http: //blogs.msdn.com/adonet/pages/feature-ctp-walkthrough-code-only-for-the-entity-framework.aspx

这让您先一步一步地编写代码。它确实需要 EF4 的 CTP 3(从该文章链接下载)。

这与我所追求的非常接近(尽管理想情况下不依赖 CTP 的解决方案会更好)

于 2010-03-23T10:18:26.500 回答
7

我建议您花半小时左右的时间在您当前的 VS 中生成一个稳定的 EF1.0 模型。这将使您在理解 EF 4.0 的隐喻和概念方面有很长的路要走。只需创建一个简单的客户、产品和订单数据库...我建议您自己创建,而不是使用 Northwind。

于 2010-03-23T15:05:22.133 回答
4

这是一个很好的问题,但随着实体框架的不断成熟,很难跟上时代的步伐。可能最好的起点是Microsoft 的 EF 页面

我在谷歌搜索时发现其他一些有用的链接(专注于代码优先):

于 2012-02-01T03:12:57.217 回答
3

您可以阅读 Lerman 的书或类似“Pro linq object-relational mapping”之类的更简单的书。POCO 的所有概念仍然相同,只是现在您应该禁用代码生成并直接映射到 edmx csdl 中的模型(或创建自己的 POCO 生成器)。所有映射原理也相同。无论如何,在运行时您正在使用从您的 POCO 对象派生的代理,因此您应该关注拦截支持(您的 POCO 属性的虚拟化)。

于 2010-03-23T09:20:01.290 回答
2

这是一个关于实体框架的 POCO 模板的演练,看起来不错。您可能还想查看ADO.NET 团队博客。如果您想从头开始(EF v1.0)作为您 EF 知识的基础,我发现 Julia Lerman 的Programming Entity Framework书非常完整。

于 2010-03-19T16:50:17.303 回答
2

没有代表对答案发表评论,但这里是 Jinkinz 答案的跟进:

在 Entity Framework 4.0 中使用存储库和工作单元模式:

http://blogs.msdn.com/b/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx

于 2011-04-20T13:41:03.090 回答
1

Julia Lerman 有一系列精彩的介绍视频,每个视频大约 10 分钟。它们是介绍性的,但有很多实用技巧可以消除一些潜在的学习障碍。我特别喜欢她使用 SQL Server Profiler 观看实际 SQL 运行的演示。

于 2011-03-17T15:00:18.417 回答
1

如果您打算使用断开连接的场景,我建议您阅读 Julie Lerman 的书:“Programming DbContext”,特别是第 4 章。

我在博客等中找到了很多示例,但几乎所有示例都是关于连接场景的。

我也开始了 这些书对我帮助很大。顺便说一句,我给她买了三本书。

于 2012-06-08T19:35:13.040 回答
0

我一直在寻找相同的答案并遇到了http://www.dotnetcurry.com/ShowArticle.aspx?ID=599

在链接的末尾,有几个链接可以让您使用 Entity Framework 4。

希望这可以帮助

于 2011-05-04T03:19:30.680 回答
0

哇,好多答案。一个包含 T4 模板的调整版本的示例怎么样?这些模板完全生成 POCO + 接口 + 存储库?

https://entityinterfacegenerator.codeplex.com

于 2014-05-11T17:16:18.223 回答