我想创建一个方法,该方法可以取得我可能会更新的属性并将其不感兴趣的属性保留下来。为实体框架4.0中的表更新字段的一般解决方案
这里是我做过什么:
public static void updateTable(int id, string field1, string field2, string field3){
using(var context = new Entities()){
var obj = context.Table.Where(x=>x.id == id).FirstOrDefault();
if(obj != null){
obj.field1 = field1;
...
obj.SaveChanges();
}
}
}
但在这种模式中,我需要在所有4个参数传递给方法,即使我只是想更新只有一个字段。有没有任何通用的解决方案,只更新我传入的字段?
我想出了这样的事情:
public static void updateTable(int id, object data_json){
using(var context = new Entities()){
var obj = context.Table.Where(x=>x.id == id).FirstOrDefault();
if(obj != null){
if(data_json['field1']!=null) //something like this
obj.field1 = data_json['field1'];
...
obj.SaveChanges();
}
}
}
但这不能处理我也想设置一个字段为空的情况。还是有更好的解决方案?
当我试过这个,只设置了3个可能的标量属性中的1个,'ApplyCurrentValues`设置了其他2个属性为null。有什么方法让`ApplyCurrentValues`只更新我设置的值,而不改变属性? – 2011-02-14 04:22:48