1

关于如何将model.tt(包含 POCO 实体类)文件移动到 Vs2010 中的单独项目的问题,我已经看到了几个答案

这似乎在 EF5 中不起作用,原因似乎是该model.tt文件是 edmx 文件的子项。

如何在 Entity Framework 5 / VS 2012 中实现相同的目标?

4

2 回答 2

1

我知道的最佳答案是简单地从当前项目中剪切 model.tt(插入适当的名称)文件并将其添加到所需的项目中。出于这个原因,我甚至重写了 EF 使用的 .tt 文件。

我喜欢关注点分离,并将适当的 .tt 文件放在以下项目中:DataAccess (model.context.tt)、Entity (model.tt) 和 Repository (model.repository.tt)。当然,您必须摆弄 .tt 文件的内容才能将其指向 .edmx,但这很简单。要使所有 t4 转换发生,VS2012 中有一个选项,Build | 转换所有 T4,这将处理解决方案中的所有 T4 文件。

遵循这个过程:

如果 .edmx 尚不存在,请创建它。

右键单击,选择“添加代码生成项”以添加 EF DbContext 5.0 生成器(如果您尚未这样做)(我假设这是您想要修改的,但此过程适用于任何 t4)。

这将为您提供两个 .tt 文件 - 模型和 model.context。

拖放到 Windows 资源管理器,在目录中找到 model.tt 文件,将其复制到“实体”目录(您希望 t4 生成到的任何位置)。

回到 VS,将其从 .edmx 项目中删除,然后将“添加现有项”添加到新项目中。

例如,如果您的两个项目如上命名(DataAccess 包含 .edmx,Entity 包含模型信息),那么您需要在值中更改 model.tt 文件中输入文件的名称(行5) "const string inputFile = "name of .edmx" 到 "..\Directory contains .edmx\name of .edmx"。

运行 T4,它就可以工作了。

于 2012-11-21T22:43:37.997 回答
0

如果您的意思是未生成代码,则它是一个错误。这是我们用来跟踪它的错误http://entityframework.codeplex.com/workitem/453 - 它包含一些解决方法。另一个选项是通过右键单击 tt 文件并选择“运行自定义工具”来强制生成代码

于 2012-11-14T22:10:09.030 回答