我正在使用与 DTO 分离的模型的 EF,并且由于我需要为许多类(GetByPrimarykey
、等)实现相同的功能GetBy
,GetAll
我认为拥有抽象类会很好:
protected List<T> GetBy(Func<T, bool> func)
{
return WorkingSet.Where(func).ToList();
}
protected T GetFirstBy(Func<T, bool> func)
{
return WorkingSet.FirstOrDefault(func);
}
public virtual T GetByPrimaryKey(K key)
{
return WorkingSet.FirstOrDefault(GetByKeyPredict(key));
}
然后在实现类中简单地实现预测函数:
protected override Func<MyType, bool> GetByKeyPredict(int key)
{
return (c=> c.MyTypeId==key);
}
问题是当我运行 SQL Server Profiler 时,我看到选择没有 where 原因。如果我覆盖该GetByPrimaryKey
功能:
public override MyTypeGetByPrimaryKey(int key)
{
return WorkingSet.FirstOrDefault(s => s.MyTypeId== key);
}
查询很好,但是我真的需要预测才能工作,因为我们的GetBy
功能被证明非常有用。