I have been doing some reading about advance EF features for last couple of weeks and got to know some interesting things, this post is a compilation of the information and provides links to the relevant sites.
Starting with EF 5.0 ObjectContext was replaced with DbContext. So what’s the difference between ObjectContext and DbContext ?
This link gives the simplest answer for the above question. And using the following code you get the ObjectContext from your DbContext. Say that your have model class named MyEntities the best practice is to create a partial class (partial classes are the safest way since the auto generated classes could be overridden at any time there’s a code regeneration) and create a property that returns the ObjectContext. The below code describes the idea.
1: public partial class MyEntities : DbContext
2: {
3: public System.Data.Entity.Core.Objects.ObjectContext ObjectContextProperty
4: {
5: get
6: {
7: return ((IObjectContextAdapter)this).ObjectContext;
8: }
9: }
10: }
Compiled Queries
Compiled Queries are helpful when we want to squeeze the final drop of performance from our application. We cache the TSQL statement which is produced from LINQ to Entity queries we write. Since we write the queries in LINQ these queries first get translated into TSQL statements and they’re executed against the SQL Server. As a result of caching the TSQL statements of the LINQ queries we cut down the translation time. Microsoft has mentioned this provides 7% performance improvement. Details here
This article provides information on creating compiled queries
The reason why I haven’t mention any samples here is that we do not need to worry much about the query compilation in EF 5.0 and above because it automatically happens.
This MSDN blog post explains the automatic query compilation in EF 5.0 and above. But again if you want to have more advanced and granular control over the compilation you should consider implementing your custom compiled queries. It’s better to have the compiled queries in your data repository classes.
Performance
Read this Data Access Blog article about the EF 5.0 performance. The below image take from the blog gives a summary.
As you see that updating to EF 5.0 on .NET 4.5 gives a greater performance boost to LINQ to Entities, automatic query compilation is one of the main features for this performance gain.
EF Versions – http://msdn.microsoft.com/en-us/data/jj574253
This channel 9 video is a good one about EF 5 and EF 6
http://channel9.msdn.com/Shows/Visual-Studio-Toolbox/Entity-Framework-5-and-6