EF 5 не грузятся данные при использовании метода Include
Проблема следующего характера: Есть две модели: Первая
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public string Patronymic { get; set; }
public ICollection<Project> LeaderProjects { get; set; }
public ICollection<Project> EmployeeProjects { get; set; }
public ICollection<Project> ExecutorProjects { get; set; }
И вторая
[Key]
public int Id { get; set; }
public string Name { get; set; }
public string CompanyCustomer { get; set; }
public string CompanyExecutor { get; set; }
public Employee Employee { get; set; }
public int EmployeeId { get; set; }
public Employee Leader { get; set; }
public int LeaderId { get; set; }
public ICollection<Employee> Executor { get; set; }
public DateTime Start { get; set; }
public DateTime Finish { get; set; }
[Column(TypeName = "int")]
public Priority Priority { get; set; }
В методе OnModelCreating я определяю связи и заполняю данные
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<Employee>()
.HasMany(e => e.EmployeeProjects)
.WithOne(p => p.Employee);
modelBuilder
.Entity<Employee>()
.HasMany(e => e.LeaderProjects)
.WithOne(p => p.Leader);
modelBuilder
.Entity<Employee>()
.HasMany(e => e.ExecutorProjects)
.WithMany(p => p.Executor);
var emp = new Employee { Id = 1, Name = "Игорь", Surname = "Панфилов", Patronymic = "Платонович" };
var emp2 = new Employee { Id = 2, Name = "Степан", Surname = "Князев", Patronymic = "Даниилович" };
var emp3 = new Employee { Id = 3, Name = "Аверьян", Surname = "Корнилов", Patronymic = "Демьянович" };
modelBuilder.Entity<Employee>()
.HasData(emp, emp2, emp3);
modelBuilder.Entity<Project>()
.HasData(
new Project { Id = 1, EmployeeId = emp.Id, LeaderId = emp.Id, CompanyCustomer = "Customer", CompanyExecutor = "Executor", Start = DateTime.Now, Finish = DateTime.Now.AddDays(10), Name = "SuperProject", Priority = Priority.High },
new Project { Id = 2, EmployeeId = emp2.Id, LeaderId = emp2.Id, CompanyCustomer = "Customer2", CompanyExecutor = "Executor2", Start = DateTime.Now, Finish = DateTime.Now.AddDays(13), Name = "SuperProject2", Priority = Priority.Low },
new Project { Id = 3, EmployeeId = emp3.Id, LeaderId = emp3.Id, CompanyCustomer = "Customer3", CompanyExecutor = "Executor3", Start = DateTime.Now, Finish = DateTime.Now.AddDays(16), Name = "SuperProject3", Priority = Priority.Middle }
);
}
Если получать данные таким образом, то все работает, только нет никаких зависимостей
public async Task<IEnumerable<Project>> GetItemsAsync(bool forceRefresh = false)
{
var allitems = await DbContext.Projects
.ToListAsync()
.ConfigureAwait(false);
return allitems;
}
А вот через Include данные не получаются вообще (ничего не происходит)
public async Task<IEnumerable<Project>> GetItemsAsync(bool forceRefresh = false)
{
var allitems = await DbContext.Projects
.Include(p => p.Employee)
.Include(p => p.Leader)
.Include(p => p.Executor)
.ToListAsync()
.ConfigureAwait(false);
return allitems;
}
Что сделать, чтобы Include отрабатывал нормально?