我想創建一個方法,該方法可以取得我可能會更新的屬性並將其不感興趣的屬性保留下來。爲實體框架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