那样我更新了Pupil实体的所有属性。我怎样才能只更新真正改变/弄脏那些属性...是否可以仅更新SQLite数据库才能更改那些属性?
我知道存在一种模式添加一个IsDirty标志到模型/ viewModel,但为每个属性添加一个这样的标志?然后做整个检查,并动态地构建SQLiteParameter集合是不是有点太多的开销?
更新ALL会不会更好?
using (SQLiteTransaction trans = DataAccess.ConnectionManager.BeginTransaction())
{
using (SQLiteCommand com = new SQLiteCommand(DataAccess.ConnectionManager))
{
com.Parameters.Add(new SQLiteParameter("@pupilId", pupil.Id));
com.Parameters.Add(new SQLiteParameter("@firstname", pupil.FirstName));
com.Parameters.Add(new SQLiteParameter("@lastname", pupil.LastName));
com.Parameters.Add(new SQLiteParameter("@gender", pupil.Gender));
com.Parameters.Add(new SQLiteParameter("@street", pupil.Street));
com.Parameters.Add(new SQLiteParameter("@city", pupil.City));
com.Parameters.Add(new SQLiteParameter("@postal", pupil.Postal));
com.Parameters.Add(new SQLiteParameter("@phone", pupil.Phone));
com.Parameters.Add(new SQLiteParameter("@email", pupil.Email));
com.Parameters.Add(new SQLiteParameter("@extrainformation",pupil.ExtraInformation));
com.CommandText = "UPDATE pupil SET firstname = @firstname, lastname = @lastname, gender = @gender, street = @street," + " city = @city, postal = @postal, phone = @phone, email = @email, extrainformation = @extrainformation WHERE pupilId = @pupilId";
com.ExecuteNonQuery();
}
trans.Commit();
}