public string Updatet <T>(T t) where T : BaseEntity
        {
            StringBuilder sb = new StringBuilder();

            PropertyInfo[] propertiesArr = t.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            sb.AppendFormat("update {0}{1}{2} set ", ColumnBeginChar, t.__TableName, ColumnEndChar);
            int i = 0;

            foreach (PropertyInfo pi in propertiesArr)
            {
                SqlParamModel spm = new SqlParamModel()
                {
                    Type  = pi.PropertyType,
                    Value = pi.GetValue(t, null)
                };
                paramValsDic.Add(ParamPrefix + pi.Name, spm);
                i++;
                if (t.__IdentityKeys.Contains(pi.Name))
                {
                    continue;
                }
                if (i != propertiesArr.Length)
                {
                    sb.AppendFormat("{0}{1}{2}={3}{1},", ColumnBeginChar, pi.Name, ColumnEndChar, ParamPrefix, pi.Name);
                }
                else
                {
                    sb.AppendFormat("{0}{1}{2}={3}{1} ", ColumnBeginChar, pi.Name, ColumnEndChar, ParamPrefix, pi.Name);
                }
            }
            sb.Append(" where ");
            i = 0;
            foreach (string primary in t.__PrimaryKeys)
            {
                // paramValsDic[primary].BuildValueFormat()
                i++;
                if (i != t.__PrimaryKeys.Count)
                {
                    sb.AppendFormat("{1}{0}{2}={3}{0} and ", primary, ColumnBeginChar, ColumnEndChar, ParamPrefix);
                }
                else
                {
                    sb.AppendFormat("{1}{0}{2}={3}{0} ", primary, ColumnBeginChar, ColumnEndChar, ParamPrefix);
                }
            }
            if (i == 0)
            {
                throw new ArgumentException("未设置主键不能使用此更新方式!");
            }

            return(sb.ToString());
        }
Example #2
0
        public string CreateUpdateSql(T t)
        {
            StringBuilder sb = new StringBuilder();

            PropertyInfo[] propertiesArr = t.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance);
            sb.AppendFormat("update {0}{1}{2} set ", ColumnBeginChar, t.__TableName, ColumnEndChar);
            int i = 0;

            foreach (PropertyInfo pi in propertiesArr)
            {
                i++;
                if (t.__IdentityKeys.Contains(pi.Name))
                {
                    continue;
                }
                if (i != propertiesArr.Length)
                {
                    sb.AppendFormat("{0}{1}{2}={3}{1},", ColumnBeginChar, pi.Name, ColumnEndChar, ParamPrefix, pi.Name);
                }
                else
                {
                    sb.AppendFormat("{0}{1}{2}={3}{1} ", ColumnBeginChar, pi.Name, ColumnEndChar, ParamPrefix, pi.Name);
                }
                SqlParamModel spm = new SqlParamModel()
                {
                    Type  = pi.GetType(),
                    Value = pi.GetValue(t, null)
                };
                paramValsDic.Add(ParamPrefix + pi.Name, spm);
            }
            sb.Append(" where ");
            i = 0;
            foreach (string primary in t.__PrimaryKeys)
            {
                i++;
                if (i != t.__PrimaryKeys.Count)
                {
                    sb.AppendFormat("{2}{0}{3}={1} and ", primary, paramValsDic[primary].BuildValueFormat(), ColumnBeginChar, ColumnEndChar);
                }
                else
                {
                    sb.AppendFormat("{2}{0}{3}={1} ", primary, paramValsDic[primary].BuildValueFormat(), ColumnBeginChar, ColumnEndChar);
                }
            }

            return(sb.ToString());
        }