使用createquery保持我的存储库通用

时间:2009-08-24 09:16:29

标签: entity-framework repository

对于使用实体框架的我的存储库,我使用以下方法返回IList。

 public virtual IList<TEntity> ToList(Func<TEntity, bool> expression)
 {   
    return  Context.CreateQuery<TEntity>("[" + EntitySetName + "]")
                                       .Where<TEntity>(expression).ToList();
 }

表达式参数允许我改变结果,但这不符合我的期望。由于首先评估createquery,然后应用我的where。我用的是超过2密耳的桌子。记录。

是否有人有解决方法如何保持方法的通用性,但是如果不首先加载所有记录就能控制结果?

1 个答案:

答案 0 :(得分:2)

您需要将参数类型更改为可转换为SQL的类型:

public virtual IList<TEntity> ToList(Expression<Func<TEntity, bool>> expression)

注意表达。