我想使用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: “Instance”成员来自Entity Framework提供程序类型 “System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer,Version=6.0.0.0,Culture=neutral, PublicKeyToken=b77a5c561934e089”的返回对象未继承自 “System.Data.Entity.Core.Common.DbProviderServices”。Entity Framework提供程序必须从此类继承, 并且“Instance”成员必须返回提供程序的单例实例。 这可能是因为提供程序不支持Entity Framework 6或更高版本; 有关更多信息,请参见http://go.microsoft.com/fwlink/?LinkId=260882。
在T4之外,相同的上下文正常工作。 我缺少什么?
KassenautomatEntities
。然后可以在 T4 中引用这个程序集。 - Alexander Petrov