【问题标题】:Moving EF 5 Database first Poco classes to separate project vs2012 EF5将 EF 5 数据库的第一个 Poco 类移动到单独的项目 vs2012 EF5
【发布时间】:2012-11-14 21:32:39
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案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 文件中更改输入文件的名称value (line 5) "const string inputFile = "name of .edmx" to "..\Directory contains .edmx\name of .edmx"。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 嗯,没有生成代码,但是有两个 t4 模板,我希望将其中一个移到单独的程序集中。
      猜你喜欢
      • 2021-10-17
      • 2015-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 2012-12-25
      • 2011-05-10
      相关资源
      最近更新 更多