私は Entity Framework 5 で作業しており、メソッド内で使用する式の作成に問題があります。
問題は、通常、式を などのラムダ式で呼び出すことだと思いますdbContext.Counties.Select(GetLargeCities())
が、使用しているコードでは、Counties エンティティを CountyWithCities というビュー モデルに投影しています。通常は式を呼び出す場所にシングルトンがc
あり、そこで式を呼び出す方法がわかりません。
式を使用してこれを実現したい理由はGetCountiesWithCities
、Entity Framework が結果内のすべてのオブジェクトの複雑なグラフを作成して、メソッドがデータベースに 1 回ヒットするようにするためです。
何らかの理由で、以下のコードはエラー「'GetLargeCities' という名前は現在のコンテキストに存在しません。」
public class CountyWithCities // this is a view model
{
public int CountyID { get; set; }
public string CountyName { get; set; }
public IEnumerable<City> Cities { get; set; }
}
public class City // this is an entity
{
public int CityID { get; set; }
public string CityName { get; set; }
public int Population { get; set; }
}
public IEnumerable<CountyWithCities> GetCountiesWithCities(int StateID)
{
return dbContext.States
.Where(s => s.StateID = StateID)
.Select(s => s.Counties)
.Select(c => new CountyWithCities
{
CountyID = c.CountyID,
CountyName = c.CountyName,
Cities = GetLargeCities(c) // How do I call the expression here?
});
}
public Expression<Func<County, IEnumerable<City>>> GetLargeCities = county =>
county.Cities.Where(city => city.Population > 50000);
ありがとう!