Visual Studio 2012 - 无法移动EF .tt文件

时间:2012-08-30 15:21:21

标签: entity-framework visual-studio-2012

我在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

3 个答案:

答案 0 :(得分:24)

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

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

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

答案 1 :(得分:2)

我在EF数据模型的单独项目中使用EF5.x和DBContext。尽管如Ladislav和here所述删除了项目文件中的DependentUpon条目,但类仍然出现在我的Model1.tt文件中。

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

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

只应删除包含<DependentUpon>标记的行,同时应保留<Compile Include="...">标记。删除整个条目将导致文件从项目列表中消失。为简洁起见,参赛作品可缩短为<Compile Include="MyTableName.cs"\>

答案 2 :(得分:0)

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