我一直在努力争取这一天,最后不得不把它交给专家。
我在.Net 4.5.2中构建了一个类库,它正在使用实体框架v6做一些工作。当我将它带入控制台应用程序时(一旦我带来了app.config并在引用中添加了实体框架),它的工作非常可爱。
我想在我的SSIS脚本任务中使用该库。在GAC中加载库之后,由于我知道脚本无法访问配置文件(与控制台应用程序相同),因此我会动态传递连接字符串....(示例)
partial class TemplateEntities
{
public TemplateEntities( string nameOrConnectionString )
: base( nameOrConnectionString )
{
}
}
但是我在尝试加载EntityFramework时遇到了问题。
I followed these instructions to dynamically load the assembly,但它开始抱怨
{“指定的架构无效。错误:\ r \ nImportModel.ssdl(2,2): 错误0152:找不到具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序。 确保提供程序已在应用程序配置文件的“entityFramework”部分中注册。小号 ee http://go.microsoft.com/fwlink/?LinkId=260882了解更多信息。“}
我的想法是,好吧,它需要其他配置垃圾......所以我给了它一些代码配置
[DbConfigurationType(typeof(EFCodeConfig))]
public partial class importEntities : DbContext
{
public importEntities(string connectionString) : base(connectionString) {
//var instance = System.Data.Entity.SqlServer.SqlProviderServices.Instance;
}
}
public class EFCodeConfig : DbConfiguration
{
public EFCodeConfig()
{
this.SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlConnectionFactory());
this.SetProviderServices("System.Data.SqlClient", System.Data.Entity.SqlServer.SqlProviderServices.Instance);
}
}
现在我收到以下错误:
的InnerException: 的HResult = -2146233054 Message =无法从程序集'EntityFramework,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'加载类型'System.Data.Entity.SqlServer.SqlProviderServices'。 来源= ImportService 类型名= System.Data.Entity.SqlServer.SqlProviderServices 堆栈跟踪: 在ImportServices.EFCodeConfig..ctor() InnerException:
我知道EntityFramework.SqlServer.dll在我的库调试目录中,但是没有加载到模块的脚本列表中。我试图拦截解析请求并加载它,但解决方案请求永远不会来这个DLL。我甚至尝试直接加载组件,但这不起作用。
我现在处于斗智斗勇,我已经尝试了我能想到的一切或google。感谢。