/** * Updates enMasse without first loading the entites into memory. * * ```cs * Models.Foo.UpdateAll(e => e.Bar == "abc" && e.Baz == 123); * ``` * * > NOTE: This is NOT a "WHERE" predicate. The expression you provide * > this Update method follows the same structure as a predicate but * > we parse it slightly diffrently. Consider each "&&" or "||" as a * > comma. And each "==" simply as a "=" operator. */ public void UpdateAll(Expression <Func <TModel, bool> > assignments) { var converter = new AssignmentsConverter(); converter.Visit(assignments.Body); this.UpdateAll(converter.Sql, converter.Parameters); }
public void MethodVarTest(int value) { Expression <Func <GracefulTestModel, bool> > expression = e => e.Bar == value; var converter = new AssignmentsConverter(); converter.Visit(expression.Body); Assert.Equal("[Bar] = {0}", converter.Sql); Assert.Equal(new object[] { 123 }, converter.Parameters); }
public void BasicTest() { Expression <Func <GracefulTestModel, bool> > expression = e => e.Foo == "Hello"; var converter = new AssignmentsConverter(); converter.Visit(expression.Body); Assert.Equal("[Foo] = {0}", converter.Sql); Assert.Equal(new object[] { "Hello" }, converter.Parameters); }
public void OrTest() { Expression <Func <GracefulTestModel, bool> > expression = e => e.Foo == "Hello" || e.Bar == 123; var converter = new AssignmentsConverter(); converter.Visit(expression.Body); Assert.Equal("[Foo] = {0}, [Bar] = {1}", converter.Sql); Assert.Equal(new object[] { "Hello", 123 }, converter.Parameters); }
private void MethodVarObjectTestPrvate(Models.CustomContext entity) { Expression <Func <Models.CustomContext, bool> > expression = e => e.Foo == entity.Foo; var converter = new AssignmentsConverter(); converter.Visit(expression.Body); Assert.Equal("[Foo] = {0}", converter.Sql); Assert.Equal(new object[] { "Bar" }, converter.Parameters); }