Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.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
C# 在哪里放置EF连接字符串?_C#_Vb.net_Entity Framework - Fatal编程技术网

C# 在哪里放置EF连接字符串?

C# 在哪里放置EF连接字符串?,c#,vb.net,entity-framework,C#,Vb.net,Entity Framework,我正在VB.NET中从事一个插件架构的项目。我有两个项目:PublicInterfaces,其中包括我的IPlugin接口和一些其他将在其他项目上共享的代码;以及DemoApp,其中引用了PublicInterfaces的汇编 我的数据模型是,并且edmx文件位于PublicInterfaces中,但在运行时,它会给我一个如下错误: 在应用程序配置文件中找不到名为“HRMSApplicationEntities”的连接字符串 而我的App.config文件的PublicInterfaces包含它

我正在VB.NET中从事一个插件架构的项目。我有两个项目:PublicInterfaces,其中包括我的
IPlugin
接口和一些其他将在其他项目上共享的代码;以及DemoApp,其中引用了PublicInterfaces的汇编

我的数据模型是,并且
edmx
文件位于PublicInterfaces中,但在运行时,它会给我一个如下错误:

在应用程序配置文件中找不到名为“HRMSApplicationEntities”的连接字符串

而我的
App.config
文件的PublicInterfaces包含它

<connectionStrings>
<add name="HRMSApplicationEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=HRMSApplication;user id=sa;password=Hamckerma;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />

但奇怪的是,当我把它放到DemoApp
App.config
文件中时,它不会出错


我应该将连接字符串放在哪里?

当您构建DemoApp时,您将在debug/release文件夹中拥有
DemoApp.exe.config
,该文件夹是应用程序的配置文件。
DemoApp和每个引用的dll(包括PublicInterfaces.dll)都将在该配置文件中查找。因此,您只需在DemoApp的
App.config
文件中添加连接字符串,它就可以正常工作。

它位于入口点(启动程序的程序集)的App.config中。生成的应用程序只使用一个配置文件。无论是什么项目,启动项目都应该有app.config,并且应该有连接字符串。所有其他应用程序配置都不会使用,除非您专门调用它们。同时,我和PAQOGOMEZ评论了这个概念:找到了一些东西,如果模型和连接字符串在第一个项目中,而第二个项目是启动项目(并且没有连接字符串),那么项目失败!!可能是因为第一个项目尚未初始化!可以回答吗?可以,但我不想在DemoApp上添加我的连接字符串!因为引用PublicInterfaces的所有项目中都应该有数据上下文。您可以加密app.config或创建web服务(这可能有些过分。取决于您的项目场景).暂时我用另一种方法解决了这个问题:我编写了一个
HRMSDataEntities
的部分类,并创建了另一个构造函数,它接受连接字符串,就像它的基一样。然后,我在一个带有常量连接字符串的模块中创建了数据上下文,并在应用程序(如DemoApp)之间共享它。这是可行的,但我知道这不是出路。。。