我希望你能幫助我,我一整晚都在摸頭,試圖找出這個錯誤持續存在的地方。Entity.SaveChanges()還保存BindingList的已刪除對象?
我正在用winform編寫一個開發票申請表。
我在窗體上有一個網格,其數據源設置爲BindingList對象。
就讓我們沿着它的線條是:
BindingList<InvoiceLine> MyInvoiceLines = new BindingList<InvoiceLine> { };
Invoice MyInvoice = new Invoice();
兩個InvoiceLine和發票都在我的模型實體對象。
MyInvoiceLines.Add(new InvoiceLine());
我刪除通過從網格線:
我通過增加線網格
MyInvoiceLines.Remove(LineToBeRemoved);
哪裏LineToBeRemoved是獲取在使用時要刪除所選行的屬性線等...
所以最終我想保存發票,所以我這樣做...
foreach(var line in MyInvoiceLines)
{
MyInvoice.InvoiceLines.Add(line);
}
然後調用SaveChange()。然而,從InvoiceLines BindingList中刪除的行也被保存...我一直在摸我的腦袋,試圖解決這個問題,因爲我的代碼中沒有WHERE從頭到尾InvoiceLines集合被引用或與數據上下文連接在這個方法之前的對象最終會保存。
這是我的代碼的簡化版本,但我不禁想到我必須在BindingList或數據上下文對象的概念上有錯誤。對我來說,這真的不明顯,因爲我是一個小菜鳥。
任何幫助,將不勝感激,而不是一個解決方法,也許一些工具或方法,我可以進一步診斷這個問題......之後
更新:增加了的BindingList看似固定之前分離的項目,但從實體中刪除對象具有奇怪的行爲:/謝謝大家。
請發表您的代碼和發生錯誤,以及在什麼condtions告訴我們。 – 2011-12-19 12:52:43
對不起,我點擊提交過早。我已經更新了OP。讓我知道你是否需要更多信息。 – Rillanon 2011-12-19 13:04:21
您是否檢查'MyInvoiceLines.Remove(LineToBeRemoved)'實際上是否工作,並且您的foreach循環中的MyInvoiceLines確實不再包含已刪除的項目? – Slauma 2011-12-19 15:18:45