【发布时间】:2018-03-26 20:14:05
【问题描述】:
我有一个类有很多可以从外部修改的属性。在设置完所有属性后,我只想更新数据库中修改后的字段,那么有效的方法是什么?
例如。让我们说下面是我的课
public class SomeClass {
private int field1;
private string field2;
private string field3;
private byte field4;
public int Field1 {
get { return field1; }
set { field1 = value; }
}
public string Field2 {
get { return field2; }
set { field2 = value; }
}
public byte Field4 {
get { return field4; }
set { field4 = value; }
}
public string Field3 {
get { return field3; }
set { field3 = value; }
}
public SomeClass() { }
public bool FillClassVariablesWithCurrentDatabaseValue() {
//Fill the class variables with current database values
}
public bool UpdateModifiedFields() {
//Only update the modified fields in database
}
}
现在要知道该字段是否已更新,我必须在类中添加许多布尔变量,如下所示
public class SomeClass {
private int field1;
private string field2;
private string field3;
private byte field4;
private bool field1Updated;
private bool field2Updated;
private bool field3Updated;
private bool field4Updated;
public int Field1 {
get { return field1; }
set {
if (field1 != value) {
field1 = value;
field1Updated = true;
}
}
}
public string Field2 {
get { return field2; }
set {
if (field2 != value) {
field2 = value;
field2Updated = true;
}
}
}
public byte Field4 {
get { return field4; }
set {
if (field4 != value) {
field4 = value;
field4Updated = true;
}
}
}
public string Field3 {
get { return field3; }
set {
if (field3 != value) {
field3 = value;
field3Updated = true;
}
}
}
public SomeClass() { }
public bool FillClassVariablesWithCurrentDatabaseValue() {
//Fill the class variables with current database values
}
public bool UpdateModifiedFields() {
//Only update the modified fields in database
string parameters = string.Empty;
if (field1Updated)
parameters += "field1=@field1";
if (field2Updated)
parameters += "field2=@field2";
if (field3Updated)
parameters += "field3=@field3";
if (field4Updated)
parameters += "field4=@field4";
//code to update these fields
}
}
但是由于我的班级有很多变量,我认为这种方法不是很好。任何建议都会有所帮助。
【问题讨论】:
标签: c# database class design-patterns sql-update