2010-10-19 25 views
0

假設我在反映表格數據的頁面上有一個CheckBoxList。用戶取消選中先前檢查的項目,並檢查未檢查的項目。我想用LINQ2EF更新數據庫,以便記錄與新提交的檢查項目相匹配。Linq2EF:使用CheckBoxList/ID值集合更新記錄

換句話說,當頁面提交時,我得到一個String[]檢查的ID。然後我需要更新數據庫:

  1. 是在那裏刪除記錄,但現在 沒有一個ID
  2. 添加被認爲不存在的記錄,但 現在有標識檢查
  3. 離開記錄在那裏,還有 仍然是單獨檢查。

複合問題,提交的Ids是在一個字符串數組中,但數據對象的Id是int。

回答

0

恩,你寫代碼。

var submittedAsInts = submittedAsString.Select(s => int.Parse(s)); 
var toAdd = submittedAsInts.Where(i => !existingEntity.SomeProperty.Any(p => p.Id == i)); 
var toDelete = existingEntity.SomeProperty.Where(p => !submittedAsInts.Contains(p.Id)); 
foreach (var delId in toDelete) 
{ 
    var o = existingEntity.SomeProperty.Single(p => p.Id == delID); 
    existingEntity.SomeProperty.Remove(o); 
    Context.DeleteObject(o); 
} 
// similarly for insert.