现在,我正在尝试创建一种通用方法,以便在存储库中包含外键。
我现在得到的是:
public static class ExtensionMethods
{
private static IQueryable<T> IncludeProperties<T>(this DbSet<T> set, params Expression<Func<T, object>>[] includeProperties)
{
IQueryable<T> queryable = set;
foreach (var includeProperty in includeProperties)
{
queryable = queryable.Include(includeProperty);
}
return queryable;
}
}
但是,编译时出现错误:
类型“ T”必须是引用类型,才能将其用作参数
通用类型或方法中的“ TEntity”
'System.Data.Entity.DbSet'
这里可能是什么问题?
最佳答案
将where T : class
附加到方法签名的末尾:
private static IQueryable<T> IncludeProperties<T>(
this DbSet<T> set,
params Expression<Func<T, object>>[] includeProperties)
where T : class // <== add this constraint.
{
...
}
DbSet<TEntity>
具有此约束,因此,为了使T
类型参数与TEntity
兼容,它必须具有相同的约束。关于c# - 创建通用扩展方法时的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26307700/