EF6.Utility.CS.ttinclude: ArgumentNotNull 不存在
EF6.Utility.CS.ttinclude: ArgumentNotNull does not exist
我刚从 EF5 升级到 EF6,我在使用来自不同程序集的 DbContext 连接到数据库的自定义 T4 中遇到此错误。
File: EF6.Utility.CS.ttinclude
Compiling transformation: The name 'ArgumentNotNull' does not exist in the current context
我所做的是将 EF.Utility.CS.ttinclude
替换为 EF6.Utility.CS.ttinclude
,这解决了另一个关于 DbSet
和 DbContext
未找到的错误。
T4很简单,像这样:
using(var context = new EntityContext)
return context.Entities.Where(x => 1==1);
除了 EF 包含,我只引用我自己的程序集。新添加的上下文生成得很好(在另一个项目中)。
到底有什么问题?
解决此问题的一种方法是将几乎所有代码移动到 .cs 文件,然后在 T4 模板中使用该文件。然后从 T4 模板中删除 EF ttinclude。
有效且易于遵循。
EF6.Utility.CS.ttinclude 引用一些定义在 main template.tt 中的静态函数,因此您也需要将它们包含在模板中。
示例:
Entity.tt 定义 ArgumentNotNull(T arg, string name) 用于 EF6.Utility.CS.ttinclude (这不是我们习惯的方式)
请参阅 EF6 设计器生成的模板底部以查看此缺失函数
我刚从 EF5 升级到 EF6,我在使用来自不同程序集的 DbContext 连接到数据库的自定义 T4 中遇到此错误。
File: EF6.Utility.CS.ttinclude
Compiling transformation: The name 'ArgumentNotNull' does not exist in the current context
我所做的是将 EF.Utility.CS.ttinclude
替换为 EF6.Utility.CS.ttinclude
,这解决了另一个关于 DbSet
和 DbContext
未找到的错误。
T4很简单,像这样:
using(var context = new EntityContext)
return context.Entities.Where(x => 1==1);
除了 EF 包含,我只引用我自己的程序集。新添加的上下文生成得很好(在另一个项目中)。
到底有什么问题?
解决此问题的一种方法是将几乎所有代码移动到 .cs 文件,然后在 T4 模板中使用该文件。然后从 T4 模板中删除 EF ttinclude。
有效且易于遵循。
EF6.Utility.CS.ttinclude 引用一些定义在 main template.tt 中的静态函数,因此您也需要将它们包含在模板中。
示例: Entity.tt 定义 ArgumentNotNull(T arg, string name) 用于 EF6.Utility.CS.ttinclude (这不是我们习惯的方式)
请参阅 EF6 设计器生成的模板底部以查看此缺失函数