就像问题所说:在Visual Studio中,当我在Model.edmx中,当我从数据库更新模型... 添加一些新的数据库字段后,它创建了几乎重复的Model1。与原始Model.Designer.cs发生冲突的Designer.cs文件。
我可以删除新的Model1.Designer.cs文件,但是新添加的字段不可用。
是否有解决方案(除了删除和重新创建模型)?
答案 0 :(得分:10)
听起来您可能删除并重新创建了模型(或类似的东西),但将原始设计器文件保留在目录中。然后,当您添加新模型时,必须使用Model1而不是Model作为设计器文件名。您是否尝试排除Model.Designer.cs文件并使其与Model1.Designer.cs文件一起使用?
好的,看一下我们项目的项目文件中的模型,我可以看到以下可能相关的部分:
<Compile Include="Domain\Model.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Model.edmx</DependentUpon>
</Compile>
我相信这个告诉项目代码文件是项目的一部分,应该是文件model.edmx的子节点,并在更改时重新生成。
我们也有这个部分:
<EntityDeploy Include="Domain\Model.edmx">
<Generator>EntityModelCodeGenerator</Generator>
<LastGenOutput>Model.Designer.vb</LastGenOutput>
<CustomToolNamespace>Domain</CustomToolNamespace>
</EntityDeploy>
不确定这些控件中的哪一个控制了生成的文件名,但您可以尝试手动编辑项目文件以查看它是否有所作为。我说你需要同时改变它们,而不仅仅是一个。
答案 1 :(得分:3)
今天发生在我身上,我通过以下方式解决了这个问题:
答案 2 :(得分:2)
<强>原因:强>
我可以重新创建它(并且偶尔会错误地执行):它会在运行项目时尝试保存数据库图表(edmx文件),以致Visual Studio无法写入各种文件并生成具有新名称的文件。可能有其他方法通过使文件不可写来重新创建它。该项目将继续工作,它只是为版本控制创建一个问题,我想象一些部署模型。
<强>症状:强>
[entityname] 1.vb,[entityname] 1.cs等形式的额外enitity文件,如Person1.vb
项目文件引用了冗余文件,例如:
<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" />
<强>解决方法强>
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>
答案 3 :(得分:0)
我遇到了同样的问题,该模型正在生成第二个designer.cs文件。这是在解决了与设计者相关的vs2010的安装问题之后(不知何故,vs2010失去了对数据实体模型设计者需要重新编译和重新安装的一堆DLL的引用)。
根据Kevin的建议,我手动编辑了项目文件以指向我的首选文件并且它有效。设计师停止重新创建第二个文件。
答案 4 :(得分:0)
如果您正在使用SVN之类的任何版本控制工具,最简单的解决方法是将工作副本与以前的版本进行比较,并在.csproj中恢复一行,其中设计器名称更改为后缀为“1”的行。
答案 5 :(得分:0)
已向Microsoft报告,但他们无法重现它。
答案 6 :(得分:0)
有同样的问题,没有一个旧的答案对我有用。额外的设计师不断出现。
我的原因(在.csproj中):
<Compile Include="DAL\MyDataSet.cs">
<DependentUpon>MyDataSet.xsd</DependentUpon>
<SubType>Component</SubType>
</Compile>
解决方案:
<Compile Include="DAL\MyDataSet.cs">
<DependentUpon>MyDataSet.xsd</DependentUpon>
</Compile>
额外的SubType导致MSDataSetGenerator每次运行两次。删除子类型后,您仍然需要删除任何其他错误生成的MyDataSet1.Designer.cs条目。有关几个例子,请参阅Kevin的帖子。