Like the question says: In Visual Studio, when in the Model.edmx, when I Update Model from Database... after adding a few new database fields, it's creating an almost duplicate Model1.Designer.cs file that is causing conflicts with the original Model.Designer.cs.
I can delete the new Model1.Designer.cs file, but then the newly added fields aren't available.
Is there a solution to this (other than deleting and recreating the model)?
The designer file (. Designer. cs) is a code file automatically generated by your designer to hold the form's layout information that was created using the Visual Studio IDE. Once you add a new form in your application, VS will automatically generate the designer file for this form.
edmx is basically an XML file which is generated when we added Entity Framework model. It is Entity Data Model Xml which contains designer (Model) and code file(. cs). As you can see in following image the .edmx file in solution explorer.
Cause:
I can recreate this (and do by mistake now and then): it occurs trying to save the database diagram (edmx file) while running a project such that Visual Studio cannot write to the various files and generates ones with new names. There may be other ways to recreate it by making the files unavailable for writing. The project will keep working, it just creates a problem for version control and I imagine some deployment models.
Symptoms:
extra enitity files in form of [entityname]1.vb, [entityname]1.cs such as Person1.vb
project file has references to redundant files such as:
<Compile Include="Models\DataContexts\FooModel.Designer.vb" />
<Compile Include="Models\DataContexts\FooModel1.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>FooModel.edmx</DependentUpon>
</Compile>
<EntityDeploy Include="Models\DataContexts\FooModel.edmx">
<Generator>EntityModelCodeGenerator</Generator>
<LastGenOutput>FooModel1.Designer.vb</LastGenOutput>
</EntityDeploy>
<Compile Include="Models\Entities\Person1.vb" />
Remedy
Change:
<Compile Include="Models\DataContexts\FooModel.Designer.vb" />
<Compile Include="Models\DataContexts\FooModel1.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>FooModel.edmx</DependentUpon>
</Compile>
To:
<Compile Include="Models\DataContexts\FooModel.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>FooModel.edmx</DependentUpon>
</Compile>
Change:
<Compile Include="Models\DataContexts\Person1.vb">
<DependentUpon>Foo.tt</DependentUpon>
</Compile>
To:
<Compile Include="Models\DataContexts\Person1.vb">
<DependentUpon>Foo.tt</DependentUpon>
</Compile>
Change:
<EntityDeploy Include="Models\DataContexts\FooModel.edmx">
<Generator>EntityModelCodeGenerator</Generator>
<LastGenOutput>FooModel1.Designer.vb</LastGenOutput>
</EntityDeploy>
To:
<EntityDeploy Include="Models\DataContexts\FooModel.edmx">
<Generator>EntityModelCodeGenerator</Generator>
<LastGenOutput>FooModel.Designer.vb</LastGenOutput>
</EntityDeploy>
It sounds like you might have deleted and recreated the model (or something similar) but left the original designer file in the directory. Then when you added a new model it had to use Model1 instead of Model as the designer file name. Have you tried excluding the Model.Designer.cs file and leaving it working with the Model1.Designer.cs file instead?
Okay, looking at the project file for a project of ours with a model in, I can see the following potentially relevant sections:
<Compile Include="Domain\Model.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Model.edmx</DependentUpon>
</Compile>
I believe this one tells the project that the code file is part of the project, and should be a subnode of the file model.edmx, and be regenerated when it changes.
We also have this section:
<EntityDeploy Include="Domain\Model.edmx">
<Generator>EntityModelCodeGenerator</Generator>
<LastGenOutput>Model.Designer.vb</LastGenOutput>
<CustomToolNamespace>Domain</CustomToolNamespace>
</EntityDeploy>
Not sure which of these controls the generated file name, but you could try hand editing your project file to see if it makes a difference. I'd say you'd need to change both at the same time, rather than just one.
This happened to me today, and I solved it by:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With