4

在工作中,我们刚刚升级到 Entity Framework 5。我们的 EDMX 文件下面现在有几个其他节点:

EntityContainer.Context.tt

其中包含生成的 DbContext 对象和

EntityContainer.tt

其中包含实体本身。

在短时间内,当我们保存 EDMX 文件时,在 EF 中添加实体会自动重新生成 tt(T4 模板)。现在突然之间,我们必须右键单击 T4 模板并选择“运行自定义工具”以让它们为上下文或实体重新生成 .cs 文件。

任何想法这可能是如何发生的?

更新

在 EDMX 中,属性“保存时转换相关文本模板”设置为 true,问题仍然存在。

4

2 回答 2

6

您的 EDMX 是否在项目的子文件夹中?如果是这样,好消息是你没有做错任何事。坏消息是这是一个已知问题……请查看我的博客文章。http://thedatafarm.com/blog/data-access/watch-out-for-vs2012-edmx-code-generation-special-case/

暂时有两种解决方法:

1) 将 edmx 移动到主项目文件夹 2) 根据需要显式强制生成代码

于 2012-10-08T22:13:56.727 回答
3

实际上还有另一种解决方法。EF 5.x DbContext Generator我发现此错误是因为我通过添加到项目将 EF 4 EDMX 升级到 EF 5 ,这将 T4 模板添加到现有 EDMX。

但是,在项目文件中,它没有将它们标记为DependentUponEDMX 文件,因此它们没有出现在 EDMX 节点下。相反,它们与文件夹中的 EDMX 并排出现。T4 代工作正常,直到我手动进入并DependentUpon在项目文件中添加节点。

观察:http ://www.youtube.com/watch?v=-boB5GhqfUI

于 2012-10-08T22:57:49.623 回答