故事
我正在嘲笑一个IRepository模式实现。一切都很好,但我有一个UpdateMany方法的问题。
原始方法
原始方法是使用Entity Framework的查询。 Update()。当然,这需要DB上下文和一些这样的
public virtual void UpdateMany(IQueryable<T> query, Expression<Func<T, T>> entityInitializer)
{
query.Update(entityInitializer);
this.DbContext.SaveChanges();
}
模拟方法
由于我不使用数据库上下文,只是一个给定类型的列表,因此IQueryable的实体扩展方法不起作用(抛出异常时没有太多合理的信息)。我的方法接受相同的参数,但我不知道如何解析它们。
示例表达
.UpdateMany(x.IsActive, new TestStuff { IsActive = false });
基本上,对于存储库中的每个活动TestStuff,将IsActive设置为false。 当然它不应该绑定到特定的对象
TL; DR 有查询,如何在其上调用lambda表达式?
答案 0 :(得分:0)
我们最终重新实现了&#34;更新&#34;方法,但它看起来并不明显。
Z.EntityFramework.Plus.BatchUpdate.EF6中的BulkUpdate和Update扩展类。