【问题标题】:Prevent Entity Framework Inheritance in Web.Config防止 Web.Config 中的实体框架继承
【发布时间】:2016-09-01 11:43:47
【问题描述】:

我有一个子 MVC 应用程序在 IIS8.5 中在另一个父 MVC 应用程序下运行。

正如预期的那样,子应用继承父应用Web.Config 设置。

我遇到的问题是子应用程序继承了 <EntityFramework> 部分,我需要阻止它这样做。我如何做到这一点?

我已经seenanumberofdifferentquestions问了一个非常相似的问题,但他们都没有阻止<EntityFramework>继承。

到目前为止我已经尝试过:

  • 隔离子应用的应用池
  • 将目录更改为虚拟目录
  • 添加<virtualDirectoryDefaults allowSubDirConfig="false" />applicationHost 文件中
  • enableConfigurationOverride="false"添加到应用程序池 applicationHost 文件中的个人资料

更新
我特别遇到代码优先迁移的问题。以下<context> 继承自父Web.config 文件,但在子应用程序中不需要:

<context type="SomeApp.Models.DataContext, SomeApp">
    <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[SomeApp.Models.DataContext, SomeApp], [SomeApp.Migrations.Configuration, SomeApp]], EntityFramework, PublicKeyToken=someToken">
        <parameters>
            <parameter value="SomeConnection_DatabasePublish" />
        </parameters>
    </databaseInitializer>
</context>

主要问题是此上下文依赖于不在子应用程序中的 dll。

【问题讨论】:

  • 您可能会尝试以编程方式覆盖配置,无论 EF 从配置中读取什么,只需添加您的代码即可将其全部重置。如果没有详细说明哪些实际设置会给您带来麻烦,则无法包含特定代码 sn-ps。
  • @WiktorZychla 谢谢,我已经更新了问题以演示正在继承的&lt;context&gt;
  • 您是否尝试将其覆盖为其他任何内容,例如迁移的空列表甚至是另一个初始化程序?
  • @WiktorZychla 你的意思是在应用程序本身而不是通过 IIS?谢谢

标签: asp.net asp.net-mvc entity-framework inheritance iis


【解决方案1】:

在父应用程序的web.config 文件中,将不想被继承的元素包装在location 元素中,并将inheritInChildApplications 设置为false

<location inheritInChildApplications="false">
    <context type="SomeApp.Models.DataContext, SomeApp">
        <databaseInitializer type="...">
            <parameters>
                <parameter value="SomeConnection_DatabasePublish" />
            </parameters>
        </databaseInitializer>
    </context>
</location>

location Element (ASP.NET Settings Schema)

【讨论】:

  • 感谢您的建议,上下文是在父应用发布时自动生成的,所以我无法控制它?
猜你喜欢
  • 2011-05-19
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
相关资源
最近更新 更多