public Tuple <string, IEnumerable <DbSimpleParameter> > GetInsertCommandParameters <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}");
            }

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

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

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

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

                if (item != allProperties.Last())
                {
                    strBuilderSql.Append(", ");
                }
                else
                {
                    strBuilderSql.Append(") values (");
                }
            }
            //Values
            foreach (var item in allProperties)
            {
                if (keyName == item && !includeKey)
                {
                    continue;
                }

                strBuilderSql.Append($"@{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(")");
                }
            }

            var sql = strBuilderSql.ToString();

            return(new Tuple <string, IEnumerable <DbSimpleParameter> >(sql, parameters));
        }
Ejemplo n.º 2
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));
        }