我将现有的mvc 3应用更新为mvc 5应用。使用Vs2013。 我刚刚决定创建一个新的mvc 5解决方案并简单地复制 在视图,模型,业务逻辑,粘贴在连接字符串等文件夹中。然而,任何方式(添加现有文件或包括在项目中)我试图继承edmx文件出错了。在旧项目中,我将edmx和.tt以及实体堆叠/作用于其下。然而,当我将它添加到新项目时,原始结构崩溃,tt文件和poco类不再堆叠在.edmx下,不仅如此,我还重命名了上下文文件的副本/副本,例如ModelContext1.cs除了在ModelContext.tt文件下作用域的ModelContext之外。如何完整地保留.edmx文件和堆叠结构,没有重复?另外,如果有办法手动将文件堆叠回.edmx文件下,怎么办呢?
答案 0 :(得分:1)
在文本编辑器中打开旧MVC3应用程序的原始.csproj,并搜索引用EDMX文件,TT文件和实体文件的XML元素。用于MVC5应用程序的新.csproj必须遵循完全相同的结构,并使用:
DependentUpon
在解决方案资源管理器中定义父文件Generator
定义用于处理文件和生成代码的工具LastGetOutput
生成器从当前文件生成的文件名称示例:
<ItemGroup>
<Compile Include="Model.Context.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Model.Context.tt</DependentUpon>
</Compile>
<Compile Include="Model.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Model.tt</DependentUpon>
</Compile>
<Compile Include="Model.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Model.edmx</DependentUpon>
</Compile>
<Compile Include="TestEntity.cs">
<DependentUpon>Model.tt</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EntityDeploy Include="Model.edmx">
<Generator>EntityModelCodeGenerator</Generator>
<LastGenOutput>Model.Designer.cs</LastGenOutput>
</EntityDeploy>
<None Include="Model.Context.tt">
<Generator>TextTemplatingFileGenerator</Generator>
<DependentUpon>Model.edmx</DependentUpon>
<LastGenOutput>Model.Context.cs</LastGenOutput>
</None>
<None Include="Model.edmx.diagram">
<DependentUpon>Model.edmx</DependentUpon>
</None>
<None Include="Model.tt">
<Generator>TextTemplatingFileGenerator</Generator>
<DependentUpon>Model.edmx</DependentUpon>
<LastGenOutput>Model.cs</LastGenOutput>
</None>
</ItemGroup>
无论如何,您的类是自动生成的,因此您无需添加它们。您可以在新项目中再次生成它们。如果你没有更改TT文件,你很可能不需要手动添加它们 - 只需使用设计器中的Add Generator项。