我正在使用Visual Studio 2008和.NET Framework 3.5。Visual Studio 2008 LINQ刪除行不起作用
我想要做我以爲會使用LINQ到實體的一些行的簡單刪除。
我有一個簡單的SQL Server數據庫後端,我使用數據實體框架來訪問它。我對EDMX中創建的默認行爲沒有做任何事情。
我試圖下面的代碼:
myDB.Dispose();
myDB = new EChODatabaseConnection();
//get our equipment list of requested equipment
var OldEquip = from u in myDB.dbEquipmentRequestedSet
where u.iRequestID == requestID
select u;
myDB.DeleteObject(OldEquip);
myDB.SaveChanges();
它到達db.DeleteObject(OldEquip),並生成以下錯誤:
「的對象不能被刪除,因爲它沒有被發現在ObjectStateManager中「。
我已驗證在執行代碼行之前OldEquip中有某些內容。
我添加了前兩行代碼(Dispose和new),以避免以前的代碼出現問題。
編輯 的dbEquipmentRequestedSet看起來是這樣的:
iRequestID (in db an int)
sCode (in db a varchar(50))
SCodePrefix (in db a varchar(10))
我使用基於iRequestID和SCODE複合主鍵。
EDIT2 要澄清,在幾乎所有情況下,OldEquip查詢將導致多個結果。
從迄今爲止的答案看來,我將不得不手動檢查每個條目才能刪除。
有沒有更優雅的解決方案?也許通過使用存儲過程?
查詢將產生一個以上的價值。 *添加*編輯顯示dbEquipmentRequestSet。 – 2011-05-17 20:33:55
是的,查詢有99%可能會導致多重。 – 2011-05-17 20:42:45
@John:查看更新後的答案。 – 2011-05-17 20:42:59