Множество EF6 DbContext за една DbConfiguration в ASP.NET 5

Опитвам се да пренеса моето MVC 5 приложение към MVC 6. Използвам Devart dotConnect за 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 клас.

Как да преодолея това ограничение?


person Shadow    schedule 21.12.2015    source източник
comment
Вижте скорошния въпрос. Вероятно може да е това, от което се нуждаете.   -  person Oleg    schedule 21.12.2015
comment
@Oleg - Не мисля, че EF6 и EF7 работят по същия начин на това ниво   -  person Pawel    schedule 21.12.2015
comment
@Pawel: Тълкувам въпроса така, че човек иска да мигрира от Entity Framework 6 към EF7 по същия начин, както мигрира от MVC 5 към MVC 6. Човек описва текущата конфигурация в EF6 и иска да мигрира към EF7. Това е моята интерпретация на въпроса. EF7 няма DbConfiguration, но човек може да дефинира и използва множество DbContext класове, с връзки към различни бази данни. От друга страна, не знам дали доставчиците за MySql и Oracle вече са налични поне като бета. Ако човек няма никого, тогава използването на ASP.NET 5 би било твърде рано.   -  person Oleg    schedule 21.12.2015
comment
Искам да остана с EF6 (защото няма доставчици за MySql и Oracle), но да мигрирам към MVC6   -  person Shadow    schedule 22.12.2015


Отговори (1)


Онзи ден се озовах в подобна ситуация и трябваше да разчитам на web.config, за да обогатя конфигурацията

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

Редактиране

Втората опция е да поставите DbConfigurationTypeAttribute във вашия контекстен клас

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

За повече подробности проверете тези ресурси

Ef6 docs: Тип конфигурация, базирана на код (EF6 нататък)

Ef6 документи: Преместване на DbConfiguration

person Dan Dohotaru    schedule 06.09.2018
comment
Разбира се, че не е така. Може да съм оставил някакъв контекст извън изгледа, но отговорът ми също е свързан с мигрирането на съществуващ уеб api от asp.net към asp.net core (поддържайки и двете живи за известно време). И двете разчитат на една и съща реализация на ef6 (следователно са принудени да се насочат към .net framework до смяна на ядрото на рамката на обекта) - person Dan Dohotaru; 07.09.2018
comment
Така че не разбирам как вашият отговор е уместен, ако конфигурацията не е заредена. Отговорът ви е напълно извън контекста. - person Shadow; 07.09.2018
comment
Редактирането е уместно, но не е добро решение, тъй като всички DbContexts в приложението се нуждаят от препратка към този клас, така че ако сте отделили плъгини, имате бъркотия. Освен това, ако имате плъгини с различни доставчици на db, трябва да посочите всички драйвери на база данни. Донякъде работи за прости случаи, но не може да замени конфигурационния файл. - person Shadow; 07.09.2018