如何在IQueryable对象上调用lambda表达式

时间:2016-12-01 10:29:05

标签: c# entity-framework linq

故事

我正在嘲笑一个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表达式?

1 个答案:

答案 0 :(得分:0)

我们最终重新实现了&#34;更新&#34;方法,但它看起来并不明显。

Z.EntityFramework.Plus.BatchUpdate.EF6中的BulkUpdate和Update扩展类。