Entity Framework 4 / POCO - Where to start?

Entity FrameworkEntity Framework-4Linq to-EntitiesPoco

Entity Framework Problem Overview


I've been programming for a while and have used LINQ-To-SQL and LINQ-To-Entities before (although when using entities it has been on a Entity/Table 1-1 relationship - ie not much different than L2SQL)

I've been doing a lot of reading about Inversion of Control, Unit of Work, POCO and repository patterns and would like to use this methodology in my new applications.

Where I'm struggling is finding a clear, concise beginners guide for EF4 which doesn't assume knowledge of EF1.

The specific questions I need answered are:

Code first / model first? Pros/cons in regards to EF4 (ie what happens if I do code first, change the code at a later date and need to regenerate my DB model - Does the data get preserved and transformed or dropped?)

Assuming I'm going code-first (I'd like to see how EF4 converts that to a DB schema) how do I actually get started? Quite often I've seen articles with entity diagrams stating "So this is my entity model, now I'm going to ..." - Unfortunately, I'm unclear if they're created the model in the designer, saved it to generate code then stopped any further auto-code generation -or- They've coded (POCO)? classes and the somehow imported them into the deisgner view?

I suppose what I really need is an understanding of where the "magic" comes from and how to add it myself if I'm not just generating an EF model directly from a DB.

I'm aware the question is a little vague but I don't know what I don't know - So any input / correction / clarification appreciated.

Needless to say, I don't expect anyone to sit here and teach me EF - I'd just like some good tutorials/forums/blogs/etc. for complete entity newbies

Entity Framework Solutions


Solution 1 - Entity Framework

These articles might be of interest...the series really gets into the advantages and disadvantages of a POCO approach.

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

In these articles the author mentions future articles that describe best practices in implementing Repository and Unit of Work patterns, but I can't find them. These articles are well written and I'd like to read more from this author.

Solution 2 - Entity Framework

I've come across this: http://blogs.msdn.com/adonet/pages/feature-ctp-walkthrough-code-only-for-the-entity-framework.aspx

Which gives you step-by-step for code first. It does require the CTP 3 for EF4 (Download linked from that article).

This is pretty close to what I was after (although ideally a solution that doesn't rely on a CTP would've been preferable)

Solution 3 - Entity Framework

I do recommend that you take a half hour or so and generate a stable EF1.0 model in your current VS. That will get you a long way towards understanding the metaphors and concepts of EF 4.0. Just whip up a simple Customer, Products and Orders db...I recommend doing your own and not using Northwind.

Solution 4 - Entity Framework

This is a great question, but tough to keep up to date as Entity Framework continues to mature. Probably the best place to start that will stay up to date into the future is Microsoft's EF page.

A few other links I found helpful while Googling (focused on Code First):

Solution 5 - Entity Framework

You can take Lerman's book or something simplier like "Pro linq object-relational mapping". All concepts are still the same with POCO, except that now you should disable code generation and map directly to your model in edmx csdl (or create your own POCO generator). All mapping principles are the same also. Anyhow in run time you are working with proxy which is derived from your POCO object so you should concern about interception support (virtualization of your POCO properties).

Solution 6 - Entity Framework

Solution 7 - Entity Framework

Here's a walkthrough on the POCO Template for the Entity Framework that looked pretty good. You might also want to check out the ADO.NET team blog. If you want to start at the beginning(EF v1.0) as a base for your EF knowledge, I found Julia Lerman's Programming Entity Framework book very complete.

Solution 8 - Entity Framework

Dont have the rep to comment on an answer, but here is a follow up to Jinkinz answer:

Using Repository and Unit of Work patterns with 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

Solution 9 - Entity Framework

Julia Lerman has a nice series of introductory videos, about 10 minutes each. They're introductory, but there are plenty of practical tips that get some potential learning roadblocks out of the way. I especially liked her demonstration of watching the actual SQL go by using SQL Server Profiler.

Solution 10 - Entity Framework

If you are going to use disconnected cenarios, I recommend you to read Julie Lerman book: "Programming DbContext", in special Chapter 4.

I found a lot of examples in blogs, etc, but almost all of them are about connected cenarios.

I'm starting too. and these book helped me a lot. By the way, I bought her three books.

Solution 11 - Entity Framework

I was looking for the same answers and came across http://www.dotnetcurry.com/ShowArticle.aspx?ID=599

At the end of the link, there are few links which will get you rolling with Entity Framework 4.

Hope this helps

Solution 12 - Entity Framework

Wow, lots of answers. How about an example which contains a tweaked version of T4 templates that generate POCO + interfaces + repositories altogether?

https://entityinterfacegenerator.codeplex.com

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBasicView Question on Stackoverflow
Solution 1 - Entity FrameworkKellySandwichesView Answer on Stackoverflow
Solution 2 - Entity FrameworkBasicView Answer on Stackoverflow
Solution 3 - Entity FrameworkChris B. BehrensView Answer on Stackoverflow
Solution 4 - Entity FrameworkDanView Answer on Stackoverflow
Solution 5 - Entity FrameworkVoiceView Answer on Stackoverflow
Solution 6 - Entity FrameworkDanielView Answer on Stackoverflow
Solution 7 - Entity FrameworkDaveBView Answer on Stackoverflow
Solution 8 - Entity FrameworkwogglesView Answer on Stackoverflow
Solution 9 - Entity FrameworkDavid PopeView Answer on Stackoverflow
Solution 10 - Entity FrameworkRodolfoView Answer on Stackoverflow
Solution 11 - Entity FrameworkDotNetInfoView Answer on Stackoverflow
Solution 12 - Entity FrameworkBelieve2014View Answer on Stackoverflow