0

私は 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);

ありがとう!

4

1 に答える 1