有没有办法在解决方案中重新创建连接字符串,该解决方案使用连接字符串引用dll?

时间:2014-12-20 20:34:36

标签: c# entity-framework

我在一个解决方案中使用EF,该解决方案编译成.DLL(连接字符串位于该解决方案中的app.config文件中)。

每当我尝试将生成的dll包含在另一个解决方案中时,我发现除了再次放入相同的连接字符串之外别无其他方法。

所以我的问题是,有没有任何方法可以使连接字符串不必在包含dll的项目中重新创建(使用EF并且在app.config中定义了连接字符串) ?

2 个答案:

答案 0 :(得分:1)

如果您希望提供一个默认连接字符串供被引用的程序集使用,该程序集通常不会更改(无论出于何种原因)但可以被执行程序集的配置文件覆盖,您可以使用设置文件在引用的程序集中。

设置文件支持连接字符串设置,并且还在程序集中嵌入编译时提供的默认值。这样,除非您需要覆盖默认值,否则不必在执行程序集的.config文件中提供连接字符串。

当您需要连接字符串时,您可以引用与您的设置文件对应的自动生成的设置类:

MySettingsFile.Default.MyConnectionString

除非在执行程序集的.config文件中提供了值,否则它将使用编译时提供的默认值。例如,这可以用于将连接字符串传递给Entity Framework DbContext类的构造函数。有关如何在必要时覆盖.config文件中的连接字符串的示例,请参阅引用程序集的app.config文件。

请注意,您的应用程序实际上只有一个.config文件,并且执行程序集不会使用(或甚至看不到)作为引用程序集项目一部分的任何.config文件。

另请注意,使用设置文件检索连接字符串将不包含提供程序名称,在给定连接名称以确定使用哪个数据库引擎时,实体框架将以其他方式查看。如果没有Provider Name,我相信默认是SqlServer。

答案 1 :(得分:0)

app.config文件的要点是允许在应用程序本身之外更改应用程序的配置。 如果要使连接字符串不可配置,请将其放入另一个资源文件中,并将此文件嵌入到应用程序中,或者将其作为常量添加到某个全局配置类中。