14

我在 VS2012 中注意到,当您创建新的 EF 模型 (.edmx) 时,DbContext 是默认代码生成,并且 .tt(T4 模板)文件现在嵌套在解决方案资源管理器中的 .edmx 文件下方。

问题: 有没有办法将这些 .tt 文件移动到另一个文件夹或项目? 当我尝试在解决方案资源管理器中拖放时,它不允许我移动嵌套的 .tt 文件。

问题详细信息: 以前(在 VS2010 中)我曾经将我的 POCO 的一个 .tt 文件移动到一个名为 DataDefinitions 的类库中,并将另一个 .tt 文件留给我的上下文在一个名为 DataAccess 的类库中。现在看来我将无法移动这些文件......并将我的资产分成不同的层。

在这篇 MSDN 文章中,如果滚动到底部,您可以看到 .tt 文件现在是如何嵌套的图片... http://msdn.microsoft.com/en-us/data/jj613116

4

3 回答 3

24

这是一些奇怪的新功能,其中模板作为依赖项添加到 EDMX 文件。您可以通过为您的项目编辑 .csproj 文件来修复它(您可以在记事本中完成或在 VS 中卸载项目并进行编辑)。你会发现这样的东西:

<None Include="Model.tt">
  <Generator>TextTemplatingFileGenerator</Generator>
  <DependentUpon>Model.edmx</DependentUpon>
  <LastGenOutput>Model.cs</LastGenOutput>
</None>

您只需要删除DependentUpon元素,模板项将成为项目的独立部分。

于 2012-08-30T20:23:06.997 回答
2

我在 EF 数据模型的单独项目中使用 EF5.xa DBContext。尽管删除了DependentUponLadislav 所述的项目文件中的条目,但这里的类仍然出现在我的 Model1.tt 文件下。

为了解决这个问题,我还必须从每个表的项目文件中删除部分条目:

<Compile Include="MyTableName.cs">
  <DependentUpon>Model1.tt</DependentUpon>
</Compile>

<DependentUpon>应删除带有标签的行,而<Compile Include="...">应保留标签。删除整个条目将导致文件从项目列表中消失。为简洁起见,条目可以缩短<Compile Include="MyTableName.cs"\>为。

于 2013-04-25T13:25:01.287 回答
0

我没有编辑项目文件,而是将同名的 EF 模型添加到项目中,关闭解决方案,从其他项目复制模型文件,然后重新打开解决方案。我更改了 edmx 属性中的命名空间,然后重新编译模型。

于 2014-02-26T21:30:01.837 回答