2016-07-05 144 views
0

我得到这个编译错误引用类型类型必须是被用作参数

类型“TEntiy”必须是引用类型才能使用它的参数“TEntity”在通用类型或方法'DbSet'。

在此方法中使用:

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); 
} 

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

+0

您可以发布“TEntity”的类定义吗? – Rohit

+1

将通用类型约束'where TEntity:class'添加到方法的签名中。 –

+0

@ heijp06它的工作原理!添加为答案。 –

回答

0

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

private IQueryable<TEntity> Search<TEntity>(...) where TEntity : class 
{ 
    ... 
} 
相关问题