在使用外部启动应用程序的应用程序配置中找不到连接字符串
我正在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;
}
不能您撰写的实体基于SQL连接字符串的ConnectionString?
Otherwhise看看这个问题:How to have DLL specific config file?
Basicly你提供的dll文件一个配置。因此,除了myapplication.exe.config,你可以有一个myddl.dll.config
什么我在这里做的是改变我的DbContext的构造方法来连接字符串。然后,我像你一样建立了连接字符串,并将其传入并将其拉直。 – Swoody17 2015-02-10 17:33:38