Example #1
0
        public static int Delete(object identity)
        {
            Type type = typeof(T);
            IList <FieldItem> dataObjectFields = FieldItem.GetDataObjectFields(type);

            string     sql = string.Empty;
            SqlCommand cmd = new SqlCommand();

            foreach (FieldItem item in dataObjectFields)
            {
                if ((item.DataObjectField != null) && item.DataObjectField.IsIdentity)
                {
                    sql = string.Format(@"DELETE FROM {0} WHERE {1} = @{1}", FieldItem.GetTableName(type), item.ColumnName);
                    cmd.Parameters.AddWithValue("@" + item.ColumnName, identity);
                }
            }

            if (!string.IsNullOrEmpty(sql))
            {
                cmd.CommandText = sql;
                return(Database.ExecuteNonQuery(cmd));
            }
            else
            {
                return(0);
            }
        }
Example #2
0
        private static List <FieldItem> CheckColumn(Type type, DataTable dt)
        {
            List <FieldItem> list = new List <FieldItem>();

            foreach (FieldItem item in FieldItem.GetDataObjectFields(type))
            {
                if (dt.Columns.Contains(item.ColumnName))
                {
                    list.Add(item);
                }
            }
            return(list);
        }
Example #3
0
        public virtual int Insert()
        {
            Type type = base.GetType();
            IList <FieldItem> dataObjectFields = FieldItem.GetDataObjectFields(type);
            string            identityName     = string.Empty;

            SqlCommand    cmd = new SqlCommand();
            StringBuilder sb  = new StringBuilder();

            StringBuilder sb1 = new StringBuilder();
            StringBuilder sb2 = new StringBuilder();

            foreach (FieldItem item in dataObjectFields)
            {
                if ((item.DataObjectField != null) && item.DataObjectField.IsIdentity)
                {
                    identityName = item.Name;
                }
                else
                {
                    if (sb1.Length > 0)
                    {
                        sb1.Append(",");
                    }
                    if (sb2.Length > 0)
                    {
                        sb2.Append(",");
                    }
                    sb1.AppendFormat("[{0}]", item.ColumnName);
                    sb2.Append("@" + item.ColumnName);
                    cmd.Parameters.AddWithValue("@" + item.ColumnName, type.GetProperty(item.ColumnName).GetValue(this, null));
                }
            }

            string sql = string.Format("INSERT INTO {0}({1}) VALUES({2}) SELECT @@IDENTITY AS ReturnValue",
                                       FieldItem.GetTableName(type), sb1.ToString(), sb2.ToString());

            cmd.CommandText = sql;

            object identity      = Database.ExecuteScalar(cmd);
            int    identityValue = Convert.ToInt32(identity);

            if (!string.IsNullOrEmpty(identityName) && identityValue != 0)
            {
                type.GetProperty(identityName).SetValue(this, identityValue, null);
            }

            return(identityValue);
        }
Example #4
0
        public virtual int Update()
        {
            Type type = base.GetType();

            FieldItem identityField = FieldItem.GetIdentityField(type);

            if (identityField == null)
            {
                throw new Exception("使用该方法需要配置Identity字段");
            }

            IList <FieldItem> dataObjectFields = FieldItem.GetDataObjectFields(type);

            SqlCommand    cmd = new SqlCommand();
            StringBuilder sb  = new StringBuilder();

            foreach (FieldItem item in dataObjectFields)
            {
                if ((item.DataObjectField != null) && !item.DataObjectField.IsIdentity)
                {
                    if (sb.Length > 0)
                    {
                        sb.Append(",");
                    }
                    sb.AppendFormat("[{0}]=@{0}", item.ColumnName);

                    cmd.Parameters.AddWithValue("@" + item.ColumnName, type.GetProperty(item.ColumnName).GetValue(this, null));
                }
            }

            string sql = string.Format(@"UPDATE {0} SET {1} WHERE [{2}]=@{2}", FieldItem.GetTableName(type), sb.ToString(), identityField.ColumnName);

            cmd.Parameters.AddWithValue("@" + identityField.ColumnName, type.GetProperty(identityField.ColumnName).GetValue(this, null));

            cmd.CommandText = sql;

            return(Database.ExecuteNonQuery(cmd));
        }