3

私の方法では:

public void DeleteSingleMrTypeByVersionIdAndId<T>(
    int version_id, int child_obj_id, CIHEntities _dbContext)
        where T : MrBase

DB エンティティから行をフェッチしたい。だから、私はこれを持っています:

IQueryable<T> old_items = _dbContext.???
            .Where(r => r.MrVersionEntityAssoc.Id == version_id)
            .Where(r => r.Id == child_obj_id)
            .Select(r => r);

Tしかし、どこから行を取得するかを知るために使用するように、LINQ ステートメントをどのように記述すればよいでしょうか?

もちろん、参照するだけでTは機能しません。

IQueryable<T> old_items = _dbContext.T
            .Where(r => r.MrVersionEntityAssoc.Id == version_id)
            .Where(r => r.Id == child_obj_id)
            .Select(r => r);

VS2012を使用しています。

ありがとうエリック

4

1 に答える 1

3

あなたが探している方法は次のSet()とおりです。

IQueryable<T> old_items = _dbContext.Set<T>()
    .Where(r => r.MrVersionEntityAssoc.Id == version_id)
    .Where(r => r.Id == child_obj_id)
    .Select(r => r);

編集:上記は を使用する場合に適用されDbContextます。の場合ObjectContext、対応するメソッドはCreateObjectSet<T>()です。

IQueryable<T> old_items = _dbContext.CreateObjectSet<T>()
    .Where(r => r.MrVersionEntityAssoc.Id == version_id)
    .Where(r => r.Id == child_obj_id)
    .Select(r => r);
于 2012-12-17T18:40:46.927 に答える