Я некоторое время искал в google и stackoverflow, и да, я нашел много статей на эту тему, но все еще не могу понять, что я делаю неправильно.
Проблема: у меня естьТаблица «link» (многие ко многим) между тремя таблицами: - check - car - gate
Мой класс 'link' выглядит следующим образом:
public class CheckCarGate
{
public int CheckId { get; set; }
public Check Check{ get; set; }
public int CarId { get; set; }
public Car Car{ get; set; }
public int GateId { get; set; }
public Gate Gate { get; set; }
}
DbContext:
public virtual DbSet<Car> Cars{ get; set; }
public virtual DbSet<Gate> Gates { get; set; }
public virtual DbSet<Check> Checks{ get; set; }
// Ключ:
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<CheckCarGate>().HasKey(p => new { p.CheckId, p.CarId, p.GateId });
}
Я следовал этой документации https://docs.microsoft.com/en-us/ef/core/modeling/relationships#many-to-many при создании моделей.CheckCarGate - это свойство навигации в моделях сущностей.Например,
public class Gate
{
public int GateId { get; set; }
public string Descr { get; set; }
public ICollection<CheckCarGate> CheckCarGates { get; set; }
}
Код впервые создал эту таблицу в базе данных.Сейчас я пытаюсь выбрать все чеки со всеми воротами для одного конкретного CarId.
Я пробовал что-то вроде этого:
var masterlist = _context.Checks.Where(p => p.CheckCarGate.Any(x => x.CarId == 12));
или:
var masterlist = _context.Checks
.Include(p => p.CheckCarGate)
.ThenInclude(p=>p.Gate)
.Include(p=>p.CheckCarGate)
.ThenInclude(p=>p.Car);
// Редактировать: Извините, что не предоставил достаточно информации!Терпите меня ...
Может ли кто-нибудь указать мне правильное направление?
Заранее большое спасибо!
N.