我想使用EntityFramework使用T4模板生成一些代码。我在与当前工作的EF6 DbContext相同的程序集中创建了一个T4模板:
<#@ template language="C#" hostspecific="true" debug="True" #>
<#@ assembly name="$(SolutionDir)\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll" #>
<#@ assembly name="$(TargetPath)" #>
<#@ import namespace="Conwell.Administration.Data.Entities" #>
<#
using (var db = new KassenautomatEntities())
{
#>
//Hello World
<#
}
#>
当我运行它时,我得到以下的执行:
运行转换:System.InvalidOperationException:
&#39;实例&#39;实体框架提供程序类型的成员 &#39; System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer,Version = 6.0.0.0,Culture = neutral, 公钥= b77a5c561934e089&#39;没有返回一个对象 继承自System.Data.Entity.Core.Common.DbProviderServices&#39;。 实体框架提供者必须从这个类继承 &#39;实例&#39;成员必须返回提供者的单例实例。 这可能是因为提供者不支持实体框架6 或以后;有关详情,请参阅http://go.microsoft.com/fwlink/?LinkId=260882 信息。
相同的上下文在T4之外工作正常。我缺少什么?
答案 0 :(得分:1)
我遇到了同样的错误,让它运转的方法是:
<#@ assembly name="$(TargetDir)\EntityFramework.dll" #> <#@ assembly name="$(TargetDir)\EntityFramework.SqlServer.dll" #>