EntityFrameworkを使用してDBエンティティのネストされたリストを埋めるために、ただ1つのLINQクエリを使用したいと考えています。EF6ネストされたリストの単一LINQクエリ
私は3つのテーブルエンティティを持っています。 ファーストクラスCities
は、List<Houses>
とHouses
とを含み、List<Residents>
を含む。
これらのクラス:
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
を取得しています:
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;}
}
私が達成したい何がそのようなものです。
Houses = db.Houses.Where(h=>h.CityId ==city.CityId).ToList()
の場合のみ機能します。 しかし、それでをHouses
に紛失しています。
LINQクエリを1つ使用することもできますか?
あなたは、LINQクエリをDBに書き込もうとしていますか? – Piou
「住民= h.Houses」はタイプミスでなければなりません。また、単一のクラス名を使用することを強くお勧めします。 –