Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用实体框架的SSIS和dll_Sql Server_Entity Framework_Dll_Ssis_Connection String - Fatal编程技术网

Sql server 使用实体框架的SSIS和dll

Sql server 使用实体框架的SSIS和dll,sql-server,entity-framework,dll,ssis,connection-string,Sql Server,Entity Framework,Dll,Ssis,Connection String,我有一个.net dll,其中包含要在SSIS包中重复使用的业务逻辑。dll使用实体框架作为其数据访问层。我找到了一种在运行时()加载DLL的方法,但我不断收到错误,这些错误归结为没有有效的连接字符串。通常在我们的EF应用程序中,连接字符串位于app.config文件中,EF会自动加载它。但是,我找不到将配置文件添加到SSIS包的方法。有人知道我可以如何添加配置文件或设置连接字符串,以便基于EF的dll可以使用它吗 我使用的是VS 2012、SQL Server 2012、EF 6.0和.Net

我有一个.net dll,其中包含要在SSIS包中重复使用的业务逻辑。dll使用实体框架作为其数据访问层。我找到了一种在运行时()加载DLL的方法,但我不断收到错误,这些错误归结为没有有效的连接字符串。通常在我们的EF应用程序中,连接字符串位于app.config文件中,EF会自动加载它。但是,我找不到将配置文件添加到SSIS包的方法。有人知道我可以如何添加配置文件或设置连接字符串,以便基于EF的dll可以使用它吗


我使用的是VS 2012、SQL Server 2012、EF 6.0和.Net Framework 4.52。似乎有两种方法可以将连接字符串加载到从SSIS包调用的dll中:

  • 使用Ako链接中的信息,该链接基本上表示将连接字符串添加到运行SSIS包的程序的配置文件(例如DTExec.exe.config、DtsDebugHost.exe.config或dtshost.exe.config)。这有点吓人,但确实有效

  • 如本文所述,在dll中修改EF上下文类,以将连接字符串作为构造函数的一部分传入:

    public MyContext(字符串dbNameOrConnectionString):base(dbNameOrConnectionString){}

  • ..然后在创建上下文对象时传入字符串

    string connectionString = GetConnectionStringFromExternalSource();
    MyContext myDb = new MyContext(connectionString);
    

    当然,要做到这一点,您必须能够更改dll的数据层,使其既可以与普通的.NET应用程序一起工作,也可以与外部为SSIS包提供的连接字符串一起工作

    你检查过了吗?谢谢-这很有效。似乎有点奇怪,我需要将所有特定于包的设置放在一个通用dtshost.exe.config文件中,但当我将实体框架连接字符串放在其中时,它确实起作用。