Пример #1
0
        public static string GetDeleteSqlByParmDic <T>(T t)
        {
            var whereSql = new StringBuilder();
            var tis      = CommDbHelper.GetModelDataTableInfo(typeof(T));

            foreach (var keys in tis.KeysName)
            {
                var ks = keys.Split('|');
                foreach (var s in ks)
                {
                    var pis = tis.AllPropertyInfos.Find(m => String.Equals(m.ColumnName, s, StringComparison.CurrentCultureIgnoreCase) || String.Equals(m.PropertyName, s, StringComparison.CurrentCultureIgnoreCase));
                    if (pis == null)
                    {
                        throw new Exception("ERROR DELETE KEY: " + s + " IN TABLE: " + tis.TableName);
                    }
                    var val = ReflectionHandler.PropertyFastGetValue(pis.PropertyInfo, t);
                    if (pis.PropertyType == typeof(DateTime))
                    {
                        whereSql.AppendFormat("{0}=to_date('{1}','{2}')", pis.ColumnName, ((DateTime)val).ToString(DateTimeHandler.LongDateTimeStyleToOracleString), DateTimeHandler.LongDateTimeStyleForOracle);
                    }
                    else
                    {
                        whereSql.AppendFormat("{0}='{1}' and ", pis.ColumnName, val);
                    }
                }
                whereSql.AppendFormat("1=1 or ");
            }
            whereSql.Append("1=0");
            return(String.Format("delete from {0} where {1}", tis.TableName, whereSql));
        }