Возможно ли использование Entity Framework для получения коллекции сложных типов?
Вот пример результата запроса базы данных View:
ID | Name | CarBrand | CarModel
111 | John | Audi | A4
222 | Andrew | BMW | X5
222 | Andrew | Toyota | Aygo
333 | Dani | Opel | Corsa
333 | Dani | Volvo | C30
Я хотел бы, наконец, иметь модель ниже в C #:
public class Owner
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public ICollection<Car> Cars { get; set; }
}
[ComplexType]
public class Car
{
public string Brand { get; set; }
public string Model { get; set; }
}
Я знаю, что могу использовать сложный тип, называя Car_Brand и Car_Model, но тогда я по-прежнему получаю каждую строку отдельно.
Я бы хотел, чтобы Entity Framework использовал значение ключа и «объединял» строки с одинаковым Id в один и помещал их в коллекцию.
Окончательный результат должен быть:
[
{
"Id": 111,
"Name": "John",
"Cars":
[
{
"Brand": "Audi",
"Model": "A4"
}
]
},
{
"Id": 222,
"Name": "Andrew",
"Cars":
[
{
"Brand": "BMW",
"Model": "X5"
},
{
"Brand": "Toyota",
"Model": "Aygo"
}
]
},
{
"Id": 333,
"Name": "Dani",
"Cars":
[
{
"Brand": "Opel",
"Model": "Corsa"
},
{
"Brand": "Volvo",
"Model": "C30"
}
]
}]
Спасибо за помощь!
EDIT:
Тот же случай с другой стороны:
Что делать, если у меня есть что-то вроде этого в БД:
OwnerView (View)
- OwnerId
- Name
- some additional data from other tables...
OwnerCar (Table)
- OwnerId
- CarId
Car (Table)
- Id
- Brand
- Model
и я определил отношения как ниже:
[Table("OwnerView")]
public class Owner
{
[Key]
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<OwnerCar> OwnerCars { get; set; }
}
public class OwnerCar {
[Key, Column(Order = 0)]
public int OwnerId { get; set; }
[Key, Column(Order = 1)]
public int CarId { get; set; }
public virtual Owner Owner { get; set; }
public virtual Car Car { get; set; }
}
public class Car
{
[Key]
public int Id { get; set; }
public string Brand { get; set; }
public string Model { get; set; }
public virtual ICollection<OwnerCar> OwnerCars { get; set; }
}
Я хотел бы получить OwnerView с коллекцией его автомобилей внутри. Результат все еще должен быть Queryable.