【发布时间】:2017-01-12 21:51:41
【问题描述】:
我想使用 EntityFramework 仅使用单个 LINQ 查询来填充 DB 实体中的嵌套列表。
我有 3 个表实体。
第一类Cities 包含List<Houses> 和Houses 包含List<Residents>。
那些课程:
class Cities
{
long CityId {get;set;}
string Name {get;set;}
List<House> Houses {get;set;}
}
class Houses
{
long CityId {get;set;}
string Address {get;set;}
List<Resident> Residents {get;set;}
}
class Residents
{
long HouseId {get;set;}
string FirstName {get;set;}
string LastName {get;set;}
}
我想要实现的是这样的:
var cities = ( from city in db.Cities
select new // Creating anonymous type to fill List of Houses
{
CityId = city.CityId,
Name = city.Name,
Houses = db.Houses.Where(h=>h.CityId == city.CityId)
.Select( new // Another anonymous type, but this time this isn't working
{
HouseId = h.HouseId,
Address = h.Address,
Residents = db.Residents.Where(r=>r.HouseId == h.HouseId).ToList()
}).ToList()
.Select( h => new Houses
{
HouseId = h.HouseId,
Address = h.Address,
Residents = h.Houses
}).ToList()
})
.ToList()
.Select( c=> new Cities
{
CityId = c.CityId
Name = c.Name,
Houses = c.Houses
}).ToList()
不幸的是,我收到了错误 The entity or complex type Houses cannot be constructed in a LINQ to Entities。
它适用于Houses = db.Houses.Where(h=>h.CityId ==city.CityId).ToList()。
但是我在Houses中失去了Residents。
甚至可以使用一个 LINQ 查询吗?
【问题讨论】:
-
您是否尝试使用 LINQ 查询写入数据库?
-
Residents = h.Houses一定是错字。此外,强烈建议使用单数类名。
标签: c# entity-framework linq