C# 在哪里放置EF连接字符串?
我正在VB.NET中从事一个插件架构的项目。我有两个项目:PublicInterfaces,其中包括我的C# 在哪里放置EF连接字符串?,c#,vb.net,entity-framework,C#,Vb.net,Entity Framework,我正在VB.NET中从事一个插件架构的项目。我有两个项目:PublicInterfaces,其中包括我的IPlugin接口和一些其他将在其他项目上共享的代码;以及DemoApp,其中引用了PublicInterfaces的汇编 我的数据模型是,并且edmx文件位于PublicInterfaces中,但在运行时,它会给我一个如下错误: 在应用程序配置文件中找不到名为“HRMSApplicationEntities”的连接字符串 而我的App.config文件的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="data source=.;initial catalog=HRMSApplication;user id=sa;password=Hamckerma;MultipleActiveResultSets=True;App=EntityFramework"" 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)之间共享它。这是可行的,但我知道这不是出路。。。