Я пытаюсь внедрить 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 не может разрешить тип, как ожидалось? Я что-то пропустил?
С наилучшими пожеланиями
Jay