我在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
答案 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属性中的命名空间,然后重新编译模型。