将EF 5数据库首先移动到Poco类以分离项目vs2012 EF5

时间:2012-11-14 21:32:39

标签: entity-framework visual-studio-2012 entity-framework-5 poco database-first

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

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

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

2 个答案:

答案 0 :(得分: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文件,将其复制到“Entity”目录(您希望t4生成的位置)。

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

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

运行T4,它就可以了。

答案 1 :(得分:0)

如果你的意思是没有生成代码,那就是一个bug。这是我们用于跟踪它的错误http://entityframework.codeplex.com/workitem/453 - 它包含一些变通方法。另一个选项是通过右键单击tt文件并选择“运行自定义工具”

来强制生成代码