类型必须是要用作参数的引用类型

时间:2016-07-05 09:14:59

标签: c# entity-framework generics

我收到此编译错误

  

'TEntiy'类型必须是引用类型才能在泛型类型或方法'DbSet'中使用参数'TEntity'。

在此方法中使用时:

private IQueryable<TEntity> Search<Expression<Func<TEntity, bool>> predicate, params Expression<Func<TEntity, object>>[] include)
{
    var dbSet = dataContext.Set<TEntity>();

    var set = include.Aggregate<Expression<Func<TEntity, object>>, IQueryable<TEntity>>
                (dbSet, (current, expression) => current.Include(expression));

    return set.Where(predicate);
}

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

DbSet<TEntity>类型要求其type参数为引用类型。您可以通过添加泛型类型约束来确保这种情况:

private IQueryable<TEntity> Search<TEntity>(...) where TEntity : class
{
    ...
}