0

http://msdn.microsoft.com/en-us/library/bb896297.aspxのMSDNの例に従って、コンパイルされたクエリを作成しようとしています。

これが私のコードです

static readonly Func<newTestDBContext, string, long, IQueryable<RouteQueryModel>> s_compiledQuery2 =
CompiledQuery.Compile<newTestDBContext, string, long, IQueryable<RouteQueryModel>>(
(db, currentLocation, x) => 
    from b in db.routes
    let avg_rating = b.ratings.Any() ? 
        b.ratings.Select(r => r.rating1).Average() : 
        0
    let coorCount = b.coordinates.Count()
    let is_favorite = b.favorites.Any(c => c.users_id == x) ? 
        true : 
        false
    let distance_to_first_from_me = b.coordinates.
        Select(c => c.position).
        FirstOrDefault().
        Distance(DbGeography.FromText(currentLocation, 4326))
    let distance_to_last_from_me = b.coordinates.
        OrderByDescending(c => c.sequence).
        Select(d => d.position).
        FirstOrDefault().
        Distance(DbGeography.FromText(currentLocation, 4326))
    let distance_to_from_me = distance_to_first_from_me < distance_to_last_from_me ? 
            distance_to_first_from_me : 
            distance_to_last_from_me
    select new RouteQueryModel 
    { 
        b = b,                 
        distance_to_from_me = distance_to_from_me.Value, 
        avg_rating = avg_rating, 
        coorCount = coorCount, 
        is_favorite = is_favorite 
    }
);

次のエラーが発生します

エラー1タイプ'W.Models.newTestDBContext'は、ジェネリック型またはメソッド'System.Data.Objects.CompiledQuery.Compile(System.Linq.Expressions.Expression>)'のタイプパラメーター'TArg0'として使用できません。'W.Models.newTestDBContext'から'System.Data.Objects.ObjectContext'への暗黙の参照変換はありません。

4

1 に答える 1

0

ここで推測して、newTestDBContextがObjectContextを継承していないか、間違ったオブジェクトを渡していることをお勧めしますか?

Entity Frameworkを使用していますか?

このページの下部にある参照コードを使用して、adventureworksを独自のスキーマに置き換えてみましたか?

http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.aspx

お役に立てれば!

于 2013-03-18T10:50:05.500 に答える