将现有edmx文件,实体类,上下文添加到新解决方案

时间:2013-12-25 04:16:00

标签: asp.net-mvc entity-framework asp.net-mvc-5

我将现有的mvc 3应用更新为mvc 5应用。使用Vs2013。 我刚刚决定创建一个新的mvc 5解决方案并简单地复制 在视图,模型,业务逻辑,粘贴在连接字符串等文件夹中。然而,任何方式(添加现有文件或包括在项目中)我试图继承edmx文件出错了。在旧项目中,我将edmx和.tt以及实体堆叠/作用于其下。然而,当我将它添加到新项目时,原始结构崩溃,tt文件和poco类不再堆叠在.edmx下,不仅如此,我还重命名了上下文文件的副本/副本,例如ModelContext1.cs除了在ModelContext.tt文件下作用域的ModelContext之外。如何完整地保留.edmx文件和堆叠结构,没有重复?另外,如果有办法手动将文件堆叠回.edmx文件下,怎么办呢?

1 个答案:

答案 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项。