Я пытаюсь внедрить EF ObjectContext, используя внедрение конструктора Unity. Моя попытка зарегистрировать тип в загрузчике следующим образом:
protected override void ConfigureContainer()
{
base.ConfigureContainer();
Container.RegisterType<ObjectContext, MyObjectContext>(new InjectionConstructor());
}
EF создает несколько конструкторов, которые выглядят так:
public MyObjectContext() : base("name=MyObjectContext", "MyObjectContext")
public MyObjectContext(string connectionString) : base(connectionString, "MyObjectContext")
public MyObjectContext(EntityConnection connection) : base(connection, "MyObjectContext")
При отладке моего кода Unity генерирует исключение ResolutionFailedException, сообщающее мне: «Тип MyObjectContext имеет несколько конструкторов длины 1. Невозможно устранить неоднозначность». во время разрешения нового класса, имеющего следующий конструктор.
public MainViewModel(UnityContainer container, MyObjectContext entities)
Насколько я знаю, использование RegisterType
с new InjectionConstructor()
в качестве аргумента гарантирует, что вызывается конструктор без параметров по умолчанию (это то, что я хочу). Почему Unity не может разрешить тип, как ожидалось? Я ничего не пропустил?
Наилучшие пожелания
Джей