实体框架4 / POCO - 从哪里开始?

时间:2010-03-19 14:37:56

标签: entity-framework entity-framework-4 linq-to-entities poco

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

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

我正在努力寻找一个清晰,简明的EF4初学者指南,它不会假设EF1的知识。

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

代码优先/型号第一?关于EF4的优点/缺点(即如果我先做代码会发生什么,以后更改代码并需要重新生成我的数据库模型 - 数据是否会被保留,转换或删除?)

假设我要进行代码优先(我想看看EF4如何将其转换为数据库模式)我该如何实际开始?我经常看到有实体图表的文章说“所以这是我的实体模型,现在我要......” - 不幸的是,我不清楚他们是否在设计师中创建了模型,将其保存到生成代码然后停止任何进一步的自动代码生成 - 或 - 他们编码(POCO)?类和不知何故将它们导入到deisgner视图中?

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

我知道这个问题有点模糊但我不知道我不知道 - 所以任何输入/更正/澄清都会受到赞赏。

毋庸置疑,我不希望有人坐在这里教我EF - 我只是喜欢一些好的教程/论坛/博客等。对于完整的实体新手

12 个答案:

答案 0 :(得分: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

在这些文章中,作者提到了未来的文章,这些文章描述了实现Repository和Unit of Work模式的最佳实践,但我找不到它们。这些文章写得很好,我想从这位作者那里阅读更多内容。

答案 1 :(得分:11)

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

首先为您提供代码的一步一步。它确实需要EF4的CTP 3(从该文章下载链接)。

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

答案 2 :(得分:7)

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

答案 3 :(得分:4)

这是一个很好的问题,但随着实体框架的不断成熟,很难保持最新状态。 Microsoft's EF page可能是保持最新状态的最佳起点{/ 3}}。

我在Googling(专注于Code First)时发现了一些其他有用的链接:

答案 4 :(得分:3)

你可以把Lerman的书或者像“Pro linq对象关系映射”这样简单的东西。除了现在你应该禁用代码生成并直接映射到edmx csdl中的模型(或创建自己的POCO生成器)之外,所有概念仍与POCO相同。所有映射原则也是相同的。无论如何,在运行时你正在使用从你的POCO对象派生的代理,所以你应该关注拦截支持(POCO属性的虚拟化)。

答案 5 :(得分:3)

答案 6 :(得分:2)

这是实体框架的POCO模板上的walkthrough看起来非常好。您可能还想查看ADO.NET team blog。如果你想从头开始(EF v1.0)作为EF知识的基础,我发现Julia Lerman的Programming Entity Framework书非常完整。

答案 7 :(得分: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

答案 8 :(得分:1)

Julia Lerman有a nice series of introductory videos,每次约10分钟。它们是介绍性的,但有很多实用的技巧可以解决一些潜在的学习障碍。我特别喜欢她使用SQL Server Profiler观看实际SQL的演示。

答案 9 :(得分:1)

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

我在博客等中发现了很多例子,但几乎所有的例子都是关于联系的内容。

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

答案 10 :(得分:0)

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

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

希望这有帮助

答案 11 :(得分:0)

哇,很多答案。包含调整版T4模板的示例如何生成POCO +接口+存储库?

https://entityinterfacegenerator.codeplex.com