entity-frameworkentity-framework-4

Why is the designer creating two .Designer.cs files when updating model from database?


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)?


Solution

  • 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.