Допустим, у меня есть следующие модели:Dependency Injection для извлечения объекта из Entity Framework
public class Dojo
{
public int DojoId {get;set;}
public DojoProperty PropOne{get;protected set;}
public DojoProperty PropTwo{ get;protected set; }
public virtual ICollection<ISamurai> Warriors { get; set; }
private IDojoService _dojoService;
public Dojo(IDojoService dojoService)
{
_dojoService = dojoService;
}
}
Я использую последнюю Ninject для DI и хотите иметь фабричный метод, а также осуществить последнюю версию Entity рамки для ОРМ, так что я реорганизовать класс следующим образом:
public class Dojo
{
public int DojoId {get;set;}
public DojoProperty PropOne{get;protected set;}
public DojoProperty PropTwo{ get;protected set; }
public virtual ICollection<ISamurai> Warriors { get; set; }
private IDojoService _dojoService;
private Dojo(IDojoService dojoService)
{
_dojoService = dojoService;
}
public static Dojo Create(IDojoService dojoService, IDojoConfig dojoConfig)
{
return new Dojo(dojoService) {PropOne = dojoConfig.PropOne, PropTwo = dojoConfig.PropTwo};
}
}
Мой вопрос, как я могу получить Entity Framework, чтобы использовать контейнер IoC, чтобы впрыснуть IDojoService когда я извлечь Dojo из т.е. базы данных:
context.Dojos.Find(dojoId);
Мой совет: не делать инъекции конструктора (или впрыскивание свойств) в ваших сущностях: https://stackoverflow.com/questions/28715966/entity-framework-object-materialization-and-dependency-injection – Steven
Большое спасибо за ваш комментарий @Steven. Если бы вы взглянули на мой ответ и посмотрели, лучше ли это, чем вопрос. Если у вас есть лучший ответ, я с радостью соглашусь на мое, особенно если я пропустил некоторые ключевые сведения. – ChrisT