public IUpdate <T1> Set <TMember>(Expression <Func <T1, TMember> > binaryExpression) { if (binaryExpression?.Body.NodeType == ExpressionType.Equal) { _set.Append(", ").Append(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, null, binaryExpression, null)); return(this); } if (binaryExpression?.Body is BinaryExpression == false && binaryExpression?.Body.NodeType != ExpressionType.Call) { return(this); } var cols = new List <SelectColumnInfo>(); var expt = _commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, cols, binaryExpression, null); if (cols.Any() == false) { return(this); } foreach (var col in cols) { if (col.Column.Attribute.IsNullable == true && col.Column.Attribute.MapType.IsNullableType()) { var replval = _orm.CodeFirst.GetDbInfo(col.Column.Attribute.MapType.GenericTypeArguments.FirstOrDefault())?.defaultValue; if (replval == null) { continue; } var replname = _commonUtils.QuoteSqlName(col.Column.Attribute.Name); expt = expt.Replace(replname, _commonUtils.IsNull(replname, _commonUtils.FormatSql("{0}", replval))); } } _setIncr.Append(", ").Append(_commonUtils.QuoteSqlName(cols.First().Column.Attribute.Name)).Append(" = ").Append(expt); return(this); }
public IDelete <T1> WhereIf(bool condition, Expression <Func <T1, bool> > exp) { if (condition == false || exp == null) { return(this); } return(this.Where(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, null, exp?.Body, null, _params))); }
public IDelete <T1> Where(Expression <Func <T1, bool> > exp) => this.Where(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, null, exp?.Body, null));
public IUpdate <T1> Set <TMember>(Expression <Func <T1, TMember> > exp) { var body = exp?.Body; var nodeType = body?.NodeType; switch (nodeType) { case ExpressionType.Equal: _set.Append(", ").Append(_commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, null, exp, null)); return(this); case ExpressionType.MemberInit: var initExp = body as MemberInitExpression; if (initExp.Bindings?.Count > 0) { for (var a = 0; a < initExp.Bindings.Count; a++) { var initAssignExp = (initExp.Bindings[a] as MemberAssignment); if (initAssignExp == null) { continue; } var memberName = initExp.Bindings[a].Member.Name; if (_table.ColumnsByCsIgnore.ContainsKey(memberName)) { continue; } if (_table.ColumnsByCs.TryGetValue(memberName, out var col) == false) { throw new Exception($"找不到属性:{memberName}"); } var memberValue = _commonExpression.ExpressionLambdaToSql(initAssignExp.Expression, new CommonExpression.ExpTSC { isQuoteName = true }); _setIncr.Append(", ").Append(_commonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(memberValue); } } return(this); case ExpressionType.New: var newExp = body as NewExpression; if (newExp.Members?.Count > 0) { for (var a = 0; a < newExp.Members.Count; a++) { var memberName = newExp.Members[a].Name; if (_table.ColumnsByCsIgnore.ContainsKey(memberName)) { continue; } if (_table.ColumnsByCs.TryGetValue(memberName, out var col) == false) { throw new Exception($"找不到属性:{memberName}"); } var memberValue = _commonExpression.ExpressionLambdaToSql(newExp.Arguments[a], new CommonExpression.ExpTSC { isQuoteName = true }); _setIncr.Append(", ").Append(_commonUtils.QuoteSqlName(col.Attribute.Name)).Append(" = ").Append(memberValue); } } return(this); } if (body is BinaryExpression == false && nodeType != ExpressionType.Call) { return(this); } var cols = new List <SelectColumnInfo>(); var expt = _commonExpression.ExpressionWhereLambdaNoneForeignObject(null, _table, cols, exp, null); if (cols.Any() == false) { return(this); } foreach (var col in cols) { if (col.Column.Attribute.IsNullable == true && col.Column.Attribute.MapType.IsNullableType()) { var replval = _orm.CodeFirst.GetDbInfo(col.Column.Attribute.MapType.GenericTypeArguments.FirstOrDefault())?.defaultValue; if (replval == null) { continue; } var replname = _commonUtils.QuoteSqlName(col.Column.Attribute.Name); expt = expt.Replace(replname, _commonUtils.IsNull(replname, _commonUtils.FormatSql("{0}", replval))); } } _setIncr.Append(", ").Append(_commonUtils.QuoteSqlName(cols.First().Column.Attribute.Name)).Append(" = ").Append(expt); return(this); }