示例#1
0
        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));
        }
示例#2
0
        public override string GetTableName(SchemaModel.Table table)
        {
            var tableName = string.Empty;

            tableName = string.Format("{0}[{1}]", tableName, table.Name);
            return(tableName);
        }
示例#3
0
        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);
        }
示例#4
0
        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;
 }