3

我喜欢在与 DbContext 分离的项目中保留我的代码或 T4 生成的 POCO。这有助于我确保我的实体类不与任何一种数据访问服务耦合。

当我创建一个新的 DB first EDMX 模型时,向导会生成一个 T4 模板来生成与 DbContext 相同的项目中的所有 POCO。如何修改此模板以将类添加到单独的项目?

仔细观察,将 DbContext 移动到新项目可能会容易得多,但是 T4 没有调用,fileManager.StartNewFile所以我不知道从哪里开始告诉它在其他地方创建文件。

4

2 回答 2

3

您可以从 DAL 项目中排除 .tt 文件,然后将其作为链接添加到另一个项目中。

这意味着您不必更改模板,因为它可以看到您的模型。

运行模板时生成的文件将包含在您的数据对象程序集中,尽管物理文件将在您的 DAL 项目中。

唯一的缺点是您必须在更新模型时手动运行自定义工具。

于 2012-12-19T15:16:55.860 回答
2

我会说:

1.- 在您的模型项目(MyProject.Model proyect)中创建一个文件,一个具有您想要的名称的 .tt 文件...(本示例为 MyModel.tt)

2.- 进入 DAL proyect,打开 WhatModel.tt 文件并将内容复制到 MyModel.tt...

3.- 从 DAL 项目中删除whateverModel.tt。

4.- 在 MyModel.tt 中查找:

const string inputFile = @"WhateverModel.edmx";

5.-并将其替换为:

const string inputFile = @"..\TheRelativeRouteToYourEdmxFileGoesHere.edmx";

6.- 并且... 运行自定义工具来生成您的模型。

注意: 7.- 当然,您将不得不更改一些 using 指令和命名空间,但它对我有用。

于 2016-03-09T06:53:02.610 回答