2016-08-20 93 views
2

我想通過Linq-to-SQL更新數據庫。如何使用LINQ更新數據庫? Linq到SQL

我有一個表命名Staff_Time_TBL其中有9列。我正在嘗試更新潛在多行的單列記錄。

我的LINQ查詢如下。它從特定日期到另一個指定日期從單個員工編號中獲取列Section_Data的數據。

DatabaseDataContext Sql = new DatabaseDataContext(ConnectionString); 

var getList = Sql.Staff_Time_TBLs.Where(
       staff => staff.Staff_No == staffNo && 
       staff.Date_Data >= dateFrom && 
       staff.Date_Data <= dateTo) 
       .Select(staff => staff.Section_Data).ToList(); 

我然後將使用一個foreach循環迭代雖然收集和更新數據庫,

foreach (var item in getList) 
       {      
        item.Section_Data = "myValue"; 
       } 
     Sql.SubmitChanges(); 

的問題是,這下面,實體Section_Data不存在。

item.Section_Data 

所以,我想我沒有正確地把LINQ放在一起能夠訪問實體?如何修改查詢以便我可以訪問實體來更新數據庫?

+0

我猜,而是因爲你選擇'staff.Section_Data',這是不太可能,你可以再做'item.Section_Data'。也許只是刪除代碼中的「選擇(...)」部分? – DavidG

+0

@DavidG,謝謝你是對的。非常感謝幫忙。 – KyloRen

回答

1
​​

該查詢會給你唯一類型Section_Data的數據,因爲您選擇Section_Data,當您爲每個上運行,你將能夠訪問有關,只有屬性,因此只需取出從查詢中選擇部分。

var getList = Sql.Staff_Time_TBLs.Where(
       staff => staff.Staff_No == staffNo && 
       staff.Date_Data >= dateFrom && 
       staff.Date_Data <= dateTo) 
       .ToList(); 

現在您將可以訪問其中的屬性。

foreach (var item in getList) 
{      
    item.Section_Data = "myValue"; 
} 
Sql.SubmitChanges(); 
+0

這樣做。非常感謝,最近幾天我一直在擺弄這件事。 – KyloRen

0

嘗試寫代碼:

enter code here 
var getList = Sql.Staff_Time_TBLs.Where(
      staff => staff.Staff_No == staffNo && 
      staff.Date_Data >= dateFrom && 
      staff.Date_Data <= dateTo) 
      .ToList();