public string GetUpdateCommand <T>(T obj) where T : class, new()
        {
            var allProperties = ScriptCommon.GetValidProperty <T>();
            var entityName    = GetEntityName <T>();

            var keyProperty = GetKeyProperty(allProperties);

            if (keyProperty == null)
            {
                throw new Exception($"Key column not found for {entityName}");
            }

            var strBuilderSql = new StringBuilder($"update [{entityName}] set ");

            foreach (var item in allProperties)
            {
                if (keyProperty == item)
                {
                    continue;
                }

                strBuilderSql.Append($"[{item.Name}]={DataFormatter.GetValue(item, obj, this.DbServerType)}");

                if (item != allProperties.Last())
                {
                    strBuilderSql.Append(", ");
                }
            }
            strBuilderSql.Append($" where {keyProperty.Name}={DataFormatter.GetValue(keyProperty, obj, this.DbServerType)}");

            var sql = strBuilderSql.ToString();

            return(sql);
        }
        public string GetInsertCommand <T>(T obj, bool includeKey = false) where T : class, new()
        {
            var allProperties = ScriptCommon.GetValidProperty <T>();
            var entityName    = GetEntityName <T>();

            var keyName = GetKeyProperty(allProperties.ToArray <PropertyInfo>());

            if (keyName == null && includeKey)
            {
                throw new Exception($"Key column not found for {entityName}");
            }

            var strBuilderSql = new StringBuilder($"insert into [{entityName}] (");

            foreach (var item in allProperties)
            {
                if (keyName == item && !includeKey && IsIdentity(item))
                {
                    continue;
                }

                strBuilderSql.Append($"[{item.Name}]");

                if (item != allProperties.Last())
                {
                    strBuilderSql.Append(", ");
                }
                else
                {
                    strBuilderSql.Append(") values (");
                }
            }

            foreach (var item in allProperties)
            {
                if (keyName == item && !includeKey && IsIdentity(item))
                {
                    continue;
                }

                strBuilderSql.Append($"{DataFormatter.GetValue(item, obj, this.DbServerType)}");

                if (item != allProperties.Last())
                {
                    strBuilderSql.Append(", ");
                }
                else
                {
                    strBuilderSql.Append(")");
                }
            }

            var sql = strBuilderSql.ToString();

            if (this.DbServerType == DbServerType.SqlServer)
            {
                sql = "set dateformat YMD;" + sql;
            }
            return(sql);
        }
Ejemplo n.º 3
0
        Tuple <string, IEnumerable <DbSimpleParameter> > IScriptBuilder.GetUpdateCommandParameters <T>(T obj)
        {
            var allProperties = ScriptCommon.GetValidProperty <T>();
            var entityName    = GetEntityName <T>();

            var keyProperty = GetKeyProperty(allProperties);

            if (keyProperty == null)
            {
                throw new Exception($"Key column not found for {entityName}");
            }

            List <DbSimpleParameter> parameters = new List <DbSimpleParameter>();

            var strBuilderSql = new StringBuilder($"update [{entityName}] set ");

            foreach (var item in allProperties)
            {
                if (keyProperty == item)
                {
                    continue;
                }

                strBuilderSql.Append($"[{item.Name}]=@{item.Name}");
                parameters.Add(new DbSimpleParameter($"@{item.Name}", GetParamType(item), GetParamSize(item), DataFormatter.GetValueForParameter(item, obj, this.DbServerType)));

                if (item != allProperties.Last())
                {
                    strBuilderSql.Append(", ");
                }
                else
                {
                    strBuilderSql.Append(" ");
                }
            }

            strBuilderSql.Append($" where [{keyProperty.Name}]={DataFormatter.GetValue(keyProperty, obj, this.DbServerType)}");

            var sql = strBuilderSql.ToString();

            return(new Tuple <string, IEnumerable <DbSimpleParameter> > (sql, parameters));
        }