我的应用程序基于wcf服务架构,其中一项服务是数据访问。此服务具有实体框架infrustructure(例如dbcontext,配置文件,poco类..),并将其设置为控制台应用程序。现在这个服务也有一个配置文件(app.config),但我需要避免它。现在这个服务从单个wcf服务开始。这意味着对于任何对数据库的请求,我们需要对数据访问执行wcf调用然后调用数据库,但是如果我们通过引用dll去掉这个服务并引用这个项目,我们就不会做任何wcf调用了,我们可以立即调用数据库。对于这个puprose,我需要重构从app.config到另一个获取配置值的当前方法。我想保存配置文件,但使用其他名称,如" db.config"。所有想要使用数据库的服务都会将这个文件放在输出目录中,但我不确定这种方法是否合适。给我推荐或解决我的任务。
答案 0 :(得分:0)
据我所知,你有一个执行数据访问的基本dll和一些从第一个dll调用该数据访问逻辑的WCF项目,以某种方式将数据库连接字符串传递给基本dll。
我所做的是将数据库特定设置移动到基本dll的属性/设置,然后在调用服务app.config中添加一个配置部分以包含这些设置。
所以,在我的核心wcf库中,我会有这样的Web配置:
<?xml version="1.0" encoding="utf-8" ?> <configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WcfServiceLibrary1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup> </configSections>
<!-- OTHER WCF LIBRARY SETTING STUFF -->
<applicationSettings>
<WcfServiceLibrary1.Properties.Settings>
<setting name="Setting1" serializeAs="String">
<value>temp1</value>
</setting>
</WcfServiceLibrary1.Properties.Settings> </applicationSettings> </configuration>
在我的WCF服务中,我会将那些感兴趣的行(部分和设置)复制为:
<?xml version="1.0"?>
<configuration>
<!-- Copied to WCF Service Web.config -->
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WcfServiceLibrary1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<!-- OTHER WEB CONFIG STUFF -->
<!-- Copied to WCF Service Web.config -->
<applicationSettings>
<WcfServiceLibrary1.Properties.Settings>
<setting name="Setting1" serializeAs="String">
<value>temp1</value>
</setting>
</WcfServiceLibrary1.Properties.Settings>
</applicationSettings>
</configuration>
[编辑] 这可以无缝地工作,您可以在库中使用这样的设置:`Properties.Settings.Default.Setting1&#39;。这是在一个自动生成的内部类中,因此可以访问&#39; Setting1&#39;在服务中,您可以通过简单的类来公开它。