Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I stop Entity Framework from generating BOTH ObjectContext and dbContext

Background

  • Visual Studio 2012
  • NEW Model.EDMX file created in VS2012
  • Copied some of the EDMX xml from a previously created EDMX into the new one

Problem / Question

Now. The EDMX (TT transform, custom tool, whatever, etc.) is generating BOTH DbContext classes (under the Model.tt/Model.Context.tt files) and ObjectContext classes (via the Model.designer.cs file). See image below:

Both the Model.tt AND the Designer.cs files are defining my entities

Everything builds fine and works with the DbContext (but obviously only if I delete the Designer.cs file just before building) but the Designer.cs - and its ObjectContext-based code - keeps reappearing. How do I stop this behavior?!

like image 725
Jay Stevens Avatar asked Oct 25 '12 18:10

Jay Stevens


2 Answers

I didn't find out how to stop the Designer.cs file from generating the ObjectContext, but I did figure out how to make it so that it doesn't matter. Just set the Build Action to "None" instead of "Compile".

Set the Build Action to None

like image 60
Jay Stevens Avatar answered Oct 07 '22 14:10

Jay Stevens


The .tt files will generate the code regardless of the code generation strategy in the .edmx. They listen to the .edmx file changes. At least this is how they are working for me.

So by turning the code generation strategy to None in the .edmx you make the .designer.cs file empty of any useful content.

Then open up the project file, find the nodes representing the .edmx, by default it is contained in EntityDeploy node ie the Build Action value, and remove its Generator subkey.

like image 41
juhan_h Avatar answered Oct 07 '22 12:10

juhan_h