2014-10-07 29 views
1

我想更新一個動態列。在我的員工表中,我有各種各樣的列,要更新的列取決於選擇,因此它是動態的。Linq - 更新動態列

在職員表,我有5列 - 編號,名稱,DESIG,離開,薩爾

所以,如果我要更新DESIG列: -

string columnName = "desig"; // This comes as a parameter. This is a dynamic Value. This is just an example. 

var data = ctx.tblEmp.Where(e => e.Id == model.Id).Select(e => e).SingleOrDefault(); 

data.desig = 'NewValue'; 

ctx.tblEmp.Attach(data); 
... 
ctx.SaveChanges(); 
+0

有沒有遇到問題?除了圍繞'NewValue'的單引號;'可能無法編譯我不確定你在問什麼。 – clarkitect 2014-10-07 05:47:27

+0

另外我想建議你可以大大簡化你的數據訪問:var data = ctx.tblEmp.SingleOrDefault(e => e.Id == model.Id);' – clarkitect 2014-10-07 05:48:30

+0

什麼是新的價值? – Ofiris 2014-10-07 06:00:12

回答

1

由於只有5個不變列,我會用簡單的解決方案:

var data = ctx.tblEmp.SingleOrDefault(e => e.Id == model.Id); 
switch (columnName) 
{ 
    case "Id": 
     data.id = newValue; //newValue should have a correct type. 
     break; 
    case "name": 
     data.name = newValue; 
     break; 
    case "desig": 
     data.desig = newValue; 
     break; 
    case "depart": 
     data.depart = newValue; 
     break; 
    case "Sal": 
     data.Sal = newValue; 
     break; 
} 
+0

事實上,我的桌子上有更多的列...但我會用這個策略去的! – Anup 2014-10-07 06:02:11

+0

好的,請注意,如果您有許多列或許多表,Reflection可以幫助您:http://stackoverflow.com/questions/1196991/get-property-value-from-string-using-reflection-in-c-sharp – Ofiris 2014-10-07 06:12:48