Asp.net Web.config转换插入实体框架部分

时间:2017-03-26 19:29:58

标签: c# asp.net entity-framework

我有一个包含实体框架部分的web.config文件设置。

Web.config文件

<configuration>
  <configSections>        
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

但我想在调试时使用数据库初始化程序。所以我想在Web.Debug.config文件中使用实体框架部分。

带有xdt:Transform="Insert"的Web.Debug.config文件:

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <entityFramework>
    <contexts xdt:Transform="Insert">
      <context type="MyProject.DashboardContext, MyProject.Data">
        <databaseInitializer type="MyProject.ContexttInitializer, MyProject.Data"></databaseInitializer>
      </context>
    </contexts>
  </entityFramework>

但这不会运行ContexttInitializer类。如果我在Web.config文件中添加此部分,它将运行。

1 个答案:

答案 0 :(得分:0)

Visual Studio不使用调试配置转换,它只使用基本web.config文件。您需要做的是将Entity Framework配置添加到基本文件并在发行版中删除它。例如,您的发布配置:

<entityFramework>
  <contexts xdt:Transform="Remove" />
</entityFramework>