public static bool Update(Painting a) { DBUtilities.Connection(); try { string sql = "Update Paintings set "; Type myType = a.GetType(); IList<PropertyInfo> props = new List<PropertyInfo>(myType.GetProperties()); int i = 1; int j = 1; foreach (PropertyInfo prop in props) { object propValue = prop.GetValue(a, null); if (propValue != null && prop.Name != "Id") { if (j < props.Count) sql += String.Format("{0} = @{1} ,", prop.Name, i); else sql += String.Format("{0} = @{1} where ID= @{2}", prop.Name, i, i + 1); i++; } j++; } i = 1; j = 1; SqlCommand cmd = new SqlCommand(sql, DBUtilities.objConnection); foreach (PropertyInfo prop in props) { object propValue = prop.GetValue(a, null); if (propValue != null && prop.Name != "Id") { if (j < props.Count) cmd.Parameters.AddWithValue(String.Format("@{0}", i), propValue); else { cmd.Parameters.AddWithValue(String.Format("@{0}", i), propValue); cmd.Parameters.AddWithValue(String.Format("@{0}", i + 1), a.Id); } i++; } j++; } cmd.ExecuteNonQuery(); cmd.Dispose(); return true; } catch (Exception) { return false; } finally { DBUtilities.Close_Connection(); } }