3

在我的方法中:

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

我想从数据库实体中获取行。所以,我有这个:

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

但是如何编写 LINQ 语句以便它T知道从哪里获取行呢?

当然,仅仅将其称为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 回答