ASP.NET 5中的一个DbConfiguration的多个EF6 DbContext

时间:2015-12-21 16:22:18

标签: entity-framework-6 asp.net-core asp.net-core-mvc devart dotconnect

我正在尝试将我的MVC 5应用程序移植到MVC 6.我正在使用Devart dotConnect for MySql和Oracle。我在配置应用程序时遇到问题。

现在我有以下条目:

<entityFramework>
    <providers>
        <provider invariantName="Devart.Data.MySql" type="Devart.Data.MySql.Entity.MySqlEntityProviderServices, Devart.Data.MySql.Entity" />
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
    </entityFramework>
    <system.data>
    <DbProviderFactories>
        <remove invariant="Devart.Data.MySql" />
        <add name="dotConnect for MySQL" invariant="Devart.Data.MySql" description="Devart dotConnect for MySQL" type="Devart.Data.MySql.MySqlProviderFactory, Devart.Data.MySql" />
    </DbProviderFactories>
</system.data>

我的应用程序在单独的程序集中有3个DbContext类(2x MySql,1x Oracle),我只能有1 DbConfiguration个类(Entity Framework 6限制)。

如果我设置此配置,则其他上下文会抱怨他们无法看到DbConfiguration类的程序集。

我如何克服这个限制?

1 个答案:

答案 0 :(得分:-1)

前几天我发现自己处于类似情况,不得不依靠web.config来丰富配置

<entityFramework codeConfigurationType="MyNamespace.MyDbConfiguration, MyAssembly">
...Your EF config...
</entityFramework>

修改

第二个选项是将DbConfigurationTypeAttribute放在您的上下文类中

[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContextContext : DbContext
{
}

有关更多详细信息,请查看这些资源

Ef6 docs: Code-Based Configuration Type (EF6 Onwards)

Ef6 docs: Moving DbConfiguration