Entity Framework объединяет 3 таблицы, когда одна из моделей имеет список ICollection - PullRequest
0 голосов
/ 01 мая 2020

Я бы хотел присоединиться к 3 моделям, но у одной из них есть ICollection, и я не знаю, как с этим справиться. Я написал простой SQL, и он работает, но я не знаю, как выполнить это в коде c#, используя linq. Мои модели.

public class Car
{
    public int IDCar { get; set; }
    public virtual CarProducent Producent { get; set; }
    public string Model { get; set; }
    public double Engine { get; set; }
    public int HorsePower { get; set; }
    public DateTime ProductionDate { get; set; }
}

public class CarProducent
{
    public int IDCarProducent { get; set; }
    public string producent { get; set; }
}
public class Klient
{
    public int IDKlient { get; set; }
    public string name{ get; set; }
    public string surname { get; set; }
    public string phone { get; set; }
    public string address { get; set; }
    public virtual ICollection<Car> Cars{ get; set; }
}

Я хотел бы присоединиться к этим 3 моделям, чтобы получить полную информацию об этом. Я написал такой запрос

var car = (  from cars in dataContext.Cars
             join prod in dataContext.CarProducent on cars.Producent.IDCarProducent equals prod.IDCarProducent
             join client in dataContext.Clients on cars.IDCar equals client.Cars. /*Here I don't know how to join */
             where cars.IDCar == id
             select new
             {
                 cars.IDCar,
                 cars.Model,
                 cars.Engine,
                 cars.HorsePower,
                 cars.ProductionDate,
                 prod.producent,
                 client.name,
                 client.surname,
                 client.address,
                 client.phone
             }).FirstOrDefault();

Я только учусь, поэтому любые советы будут полезны.

1 Ответ

1 голос
/ 01 мая 2020

Это просто

from client in dataContext.Klient
from car in client.Cars
where cars.IDCar == id
select new
{
  car.IDCar,
  car.Model,
  car.Engine,
  car.HorsePower,
  car.ProductionDate,
  car.Producent.producent,
  client.name,
  client.surname,
  client.address,
  client.phone
}

Если вы добавите еще одно свойство навигации, вы также можете написать

from car in dataContext.Cars
where cars.IDCar == id
select new
{
  car.IDCar,
  car.Model,
  car.Engine,
  car.HorsePower,
  car.ProductionDate,
  car.Producent.producent,
  car.Client.name,
  car.Client.surname,
  car.Client.address,
  car.Client.phone
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...