我想在T4模板中实例化一个新的EF6上下文,但是我收到以下错误:
system.invalidOperationException: The ‘Instance’ member of the Entity Framework provider type ‘System.Data.Entity.sqlServer.sqlProviderServices,EntityFramework.sqlServer,Version=6.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089’ did not return an object that inherits from ‘System.Data.Entity.Core.Common.DbProviderServices’. Entity Framework providers must inherit from this class and the ‘Instance’ member must return the singleton instance of the provider.
解决方法
问题是无法实例化实体框架上下文,因为无法读取连接字符串.
我做了以下以获取连接字符串:
var map = new ExeConfigurationFileMap(); map.ExeConfigFilename = this.Host.ResolvePath(@"..\..\Web.config"); var config = ConfigurationManager.OpenMappedExeConfiguration(map,ConfigurationUserLevel.None); var connectionString = config.ConnectionStrings.ConnectionStrings["BrainPerformEntities"].ConnectionString;
<#@ import namespace="Microsoft.VisualStudio.TextTemplating" #> <#@ import namespace="System.Configuration" #> <#@ import namespace="System" #>
还要确保已引用所有实体框架程序集:
<#@ assembly name="$(MSBuildProjectDirectory)\bin\EntityFramework.dll" #> <#@ assembly name="$(MSBuildProjectDirectory)\bin\EntityFramework.sqlServer.dll" #> <#@ assembly name="System.Core.dll" #> <#@ assembly name="System.Configuration" #> <#@ assembly name="System.Data.dll" #>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。