int IEntityOperator.UpdateValues(SchemaModel.Column keyColumn, SchemaModel.Table table, Dictionary <string, object> values) { var keyValue = values.Get(keyColumn.Name); if (keyValue == null) { throw new InvalidOperationException("字典未传入主键"); } var updateSql = "UPDATE {0} SET {1} WHERE {2}"; var tableName = _sqlBuilder.GetTableName(table); var sqlParameters = new Dictionary <string, object>(); var setts = new List <string>(); var alias = string.Empty; foreach (var key in values.Keys) { if (key == keyColumn.Name) { continue; } alias = ParserUtils.GenerateAlias(key); var set = string.Format("[{0}] = @{1}", key, alias); sqlParameters.Add(alias, values.Get(key)); setts.Add(set); } alias = ParserUtils.GenerateAlias(keyColumn.Name); var condition = string.Format("[{0}] = @{1}", keyColumn.Name, alias); sqlParameters.Add(alias, keyValue); updateSql = string.Format(updateSql, tableName, string.Join(",", setts), condition); return(_sqlExecutor.ExecuteNonQuery(updateSql, sqlParameters)); }
public override string GetTableName(SchemaModel.Table table) { var tableName = string.Empty; tableName = string.Format("{0}[{1}]", tableName, table.Name); return(tableName); }
public override string GetTableName(SchemaModel.Table table) { var tableName = string.Empty; if (!string.IsNullOrWhiteSpace(table.DataBase)) { tableName = string.Format("[{0}].DBO.", table.DataBase); } tableName = string.Format("{0}[{1}]", tableName, table.Name); return(tableName); }
int IEntityOperator.Delete(SchemaModel.Column keyColumn, SchemaModel.Table table, params int[] ids) { if (ids.Length <= 0) { return(0); } var deleteSql = "DELETE FROM {0} WHERE [{1}] IN ({2})"; var tableName = _sqlBuilder.GetTableName(table); deleteSql = string.Format(deleteSql, tableName, keyColumn.Name, string.Join(",", ids)); return(_sqlExecutor.ExecuteNonQuery(deleteSql, new Dictionary <string, object>())); }
protected override Expression VisitParameter(ParameterExpression node) { var column = new Column(); if (TableInfoManager.IsEntity(node.Type)) { //弹出第一个参数,一般是列 var table = GetTable(node.Type); var _memberInfo = ((MemberExpression)_memberInfos.Pop()).Member; column.DataType = ((PropertyInfo)_memberInfo).PropertyType; column.Name = table.Columns.Get(_memberInfo.Name).Name; column.MemberInfo = _memberInfo; var tableAlias = node.Name; if (_joins != null) { if (_joins.ContainsKey(tableAlias)) { tableAlias = _joins[tableAlias].Right.Table.Alias; } } else { tableAlias = table.Name; } column.Table = CreateTable(tableAlias, table.DataBase, table.Name, table.Type); while (_memberInfos.Count > 0) { var exp = _memberInfos.Pop(); switch (exp.NodeType) { case ExpressionType.MemberAccess: var memberInfo = ((MemberExpression)exp).Member; column.Converters.Push(new ColumnConverter(memberInfo, new List <object>())); break; default: throw new Exception(); } } //column.Converter = GetConverter(null); } else { SchemaModel.Table tableInfo = GetTable(); MemberInfo columnMember = null; var tableAlias = string.Empty; Table table = null; if (tableInfo != null) { tableAlias = _tableMember.Name; columnMember = ((MemberExpression)_memberInfos.Pop()).Member; if (_joins != null) { if (_joins.ContainsKey(tableAlias)) { tableAlias = _joins[tableAlias].Right.Table.Alias; } } else { tableAlias = tableInfo.Name; } table = CreateTable(tableAlias, tableInfo.DataBase, tableInfo.Name, tableInfo.Type); } else { columnMember = ((MemberExpression)_memberInfos.Pop()).Member; table = _columns.Get(columnMember.Name).Table; tableAlias = table.Alias; tableInfo = GetTable(table.Type); } //if (_memberInfos.Count > 1) //{ // tableInfo = GetTable(); //} //else //{ //} var columnType = ((PropertyInfo)columnMember).PropertyType; var columnName = string.Empty; var columnSechma = tableInfo.Columns.Get(columnMember.Name); if (columnSechma != null) { columnName = columnSechma.Name; } else { columnName = Context.Columns.Get(columnMember.Name).Name; } column = new Column() { DataType = columnType, Name = columnName, Table = table, MemberInfo = columnMember }; while (_memberInfos.Count > 0) { var exp = _memberInfos.Pop(); switch (exp.NodeType) { case ExpressionType.MemberAccess: var memberInfo = ((MemberExpression)exp).Member; column.Converters.Push(new ColumnConverter(memberInfo, new List <object>())); break; default: throw new Exception(); } } //column.Converter = GetConverter(null); } Token = Token.Create(column); return(node); }
public PropertyConfiguration(SchemaModel.Table table, string propertyName) { _propertyType = typeof(T); _table = table; _propertyName = propertyName; }