У меня есть следующие модели:
public class Transfer
{
public Article Article { get; set; }
public Branch BranchFrom { get; set; }
public Branch BranchTo { get; set; }
public User User { get; set; }
}
public class Article
{
public int Id{ get; set; }
public string Description { get; set; }
}
public class Branch
{
public int Id { get; set; }
public string Address { get; set; }
}
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
Мне нужно получить список всех переводов, сделанных конкретным пользователем, и загрузить все связанные с ним объекты (BranchFrom, BranchTo, Article, User).
В EF 6 мне было легко это сделать с помощью этого кода:
_dbContext.Transfer.Include(x=>x.BranchFrom).Include(x=>x.BranchTo).Include(x=>x.Article).Include(x=>x.User).Where(x=>x.User.Id == userId).ToListAsync();
Учитывая, что в EF Core 2.1 вы должны определить соединительные таблицы, я добавил их следующим образом:
public class TransferUser
{
public int TransferId { get; set; }
public int UserId { get; set; }
public Transfer Transfer { get; set; }
public User User { get; set; }
}
public class TransferArticle
{
public int TransferId { get; set; }
public int ArticleId { get; set; }
public Transfer Transfer { get; set; }
public Article Article { get; set; }
}
public class TransferBranchFrom
{
public int TransferId { get; set; }
public int BranchId { get; set; }
public Transfer Transfer { get; set; }
public Branch Branch { get; set; }
}
public class TransferBranchTo
{
public int TransferId { get; set; }
public int BranchId { get; set; }
public Transfer Transfer { get; set; }
public Branch Branch { get; set; }
}
И поэтому я изменил модель переноса так:
public class Transfer
{
public TransferArticle TransferArticle { get; set; }
public TransferBranch TransferBranchFrom { get; set; }
public TransferBranch TransferBranchTo { get; set; }
public TransferUser TransferUser { get; set; }
}
Теперь я не знаю, каким должен быть запрос.
Я былделает это так, и это работает, но загружает только передачу и пользователя
_dbContext.Transfer.Include(x=>x.TransferUser).Where(x=>x.TransferUser.UserId == userId).ToListAsync();
Когда я добавляю другую таблицу, она не работает и выдает исключение:
_dbContext.Transfer.Include(x=>x.TransferUser).Include(x=>x.TransferBranchFrom).Where(x=>x.TransferUser.UserId == userId).ToListAsync();
Я не могунайдите примеры загрузки всех сущностей для этого сценария