У меня есть решение, в котором у нас есть два DbContexts, и мы находимся в процессе перехода от EF4 к EF6. Более старый DbContext был первым кодом, и мы в основном используем новый сгенерированный db-first, но нуждаемся как в работе из-за внешних зависимостей.
Мои классы выглядят следующим образом:
namespace Old.Busted.EF.DAL
{
[DbConfigurationType(typeof(Old.Busted.EF.DAL.OldConfiguration))]
public class OldContext : DbContext[...]
public class OldConfiguration : DbConfiguration[...]
}
namespace New.Shiny.EF.DAL
{
[DbConfigurationType(typeof(New.Shiny.EF.DAL.NewConfiguration))]
public class NewContext : DbContext[...]
public class NewConfiguration : DbConfiguration[...]
}
Точная ошибка, которую я получаю,
Был установлен экземпляр "NewConfiguration", но этот тип не был обнаружен в той же сборке, что и контекст "OldContext". Или поместите тип DbConfiguration в ту же сборку, что и DbContext введите DbConfigurationTypeAttribute в тип DbContext, чтобы укажите тип DbConfiguration или задайте тип DbConfiguration в файл конфигурации.
который пытается применить новую конфигурацию к старому контексту. Библиотека, в которой сидит сломанный код, является единственной библиотекой, которая ссылается как на старые, так и на новые EF DAL, и, кроме того, это исключение получает только тогда, когда тесты запускаются в командной строке через mstest - они проходят просто отлично, Visual Studio.
Использование .NET 4.0 и Visual Studio 2010.
Вещи, которые я пробовал:
- размещение информации конфигурации в файлах конфигурации вместо кода (без изменений)
- размещение одной DbConfiguration в общей библиотеке (сломалось ровно больше вещей)
- с использованием конструктора DbContext, передающего объект DbConnection вместо конструктора без параметров или строки (без изменений)