EF6.Utility.CS.ttinclude:ArgumentNotNull不存在

时间:2017-11-28 17:41:46

标签: entity-framework t4

我刚刚从EF5升级到EF6,我在使用来自不同程序集的DbContext连接到数据库的自定义T4中遇到此错误。

  

文件:EF6.Utility.CS.ttinclude

     

编译转换:名称' ArgumentNotNull'在当前上下文中不存在

我所做的就是将EF.Utility.CS.ttinclude替换为EF6.Utility.CS.ttinclude,这解决了有关DbSetDbContext未找到的其他错误。

T4很简单,就像这个:

using(var context = new EntityContext)
    return context.Entities.Where(x => 1==1);

除了EF包括我只引用我自己的程序集。新添加的Context生成得很好(在另一个项目中)。

究竟什么是错的?

2 个答案:

答案 0 :(得分:1)

EF6.Utility.CS.ttinclude 引用了main template.tt中定义的一些静态函数,因此您也需要将其包含在模板中。

示例: Entity.tt定义了 ArgumentNotNull (T arg,字符串名称),它在EF6.Utility.CS.ttinclude中使用(这不是我们习惯的方式)

请参阅EF6设计器生成的模板的底部,以查看缺少的功能

答案 1 :(得分:0)

解决此问题的一种方法是将几乎所有代码移动到.cs文件,然后在T4模板中使用该文件。然后从T4模板中删除EF ttinclude。

工作并且很容易遵循。