实体框架自定义配置文件

时间:2014-11-27 09:01:53

标签: .net entity-framework wcf architecture config

我的应用程序基于wcf服务架构,其中一项服务是数据访问。此服务具有实体框架infrustructure(例如dbcontext,配置文件,poco类..),并将其设置为控制台应用程序。现在这个服务也有一个配置文件(app.config),但我需要避免它。现在这个服务从单个wcf服务开始。这意味着对于任何对数据库的请求,我们需要对数据访问执行wcf调用然后调用数据库,但是如果我们通过引用dll去掉这个服务并引用这个项目,我们就不会做任何wcf调用了,我们可以立即调用数据库。对于这个puprose,我需要重构从app.config到另一个获取配置值的当前方法。我想保存配置文件,但使用其他名称,如" db.config"。所有想要使用数据库的服务都会将这个文件放在输出目录中,但我不确定这种方法是否合适。给我推荐或解决我的任务。

1 个答案:

答案 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;在服务中,您可以通过简单的类来公开它。