在使用外部启动应用程序的应用程序配置中找不到连接字符串

问题描述:

我正在C#中使用Visual Studio 2013 .Net 4.5创建一个dll项目。该项目包含一个使用EF6的实体模型。我的dll将作为外部应用程序的插件被调用,它属于某些硬件产品的软件套件。在使用外部启动应用程序的应用程序配置中找不到连接字符串

我有视觉工作室成立这样当我按调试它会启动这个外部应用程序(我将其称为网关),这反过来又使调用我的DLL,让我调试。

当我的dll尝试调用实体模型时,会发生该问题。我得到:

出现InvalidOperationException - “System.InvalidOperationException”类型的未处理的异常在ENTITYFRAMEWORK.dll

发生实体‘“没有命名的连接字符串’可能会在应用程序配置文件中找到。现在

,我的配置文件了,很清楚,这是由VS加入时,我建立模型所需的连接字符串。我已阅读所有类似的线程到这个问题,并将连接字符串添加到配置不是问题。

网关确实知道实际的数据库实例,并且在配置中给出连接字符串。但是,实体连接字符串和实例连接字符串不同,因为由VS和EF添加的实体术语。

我能够创建一个控制台应用程序,这使得我的DLL调用,能够使enity调用。我必须为控制台应用程序提供对我的dll和实体框架的引用,并将连接字符串添加到控制台应用程序配置文件中。

这使我相信,任何应用程序,使通话到我的DLL必须有EF的知识和连接字符串。

这是这种情况?如果是这样的话,我觉得我将无法将EF用于此项目,因为我无法让网关知道EF。

感谢您的输入!

所以我会做什么在这种情况下作出新的语境下,从当前的情况下,并在构造函数传递连接字符串中继承。

或者,您也可以创建一个连接字符串,然后您可以传入构造函数重载您的上下文。

public string GetConnectionString() 
    { 
     string connectionString = new EntityConnectionStringBuilder 
     { 
      Metadata = "res://*/Data.System.csdl|res://*/Data.System.ssdl|res://*/Data.System.msl", 
      Provider = "System.Data.SqlClient", 
      ProviderConnectionString = new SqlConnectionStringBuilder 
      { 
       InitialCatalog = ConfigurationManager.AppSettings["SystemDBName"], 
       DataSource = ConfigurationManager.AppSettings["SystemDBServerName"], 
       IntegratedSecurity = false, 
       UserID = ConfigurationManager.AppSettings["SystemDBUsername"], 
       Password = ConfigurationManager.AppSettings["SystemDBPassword"], 
       MultipleActiveResultSets = true, 
      }.ConnectionString 
     }.ConnectionString; 

     return connectionString; 
    } 
+0

什么我在这里做的是改变我的DbContext的构造方法来连接字符串。然后,我像你一样建立了连接字符串,并将其传入并将其拉直。 – Swoody17 2015-02-10 17:33:38

不能您撰写的实体基于SQL连接字符串的ConnectionString?

Otherwhise看看这个问题:How to have DLL specific config file?

Basicly你提供的dll文件一个配置。因此,除了myapplication.exe.config,你可以有一个myddl.dll.config