我在Linq to SQL模型中有一個Client
實體和PostCode
實體。數據庫中的Clients
表包含client_postcode
列,該列是用於郵政編碼PostCode
表中的列的FK列,該表是PostCode表的varchar列主鍵。Linq to SQL替換相關實體
當更新客戶端,在我的代碼我這樣做
// postcode
updating.PostCode = (from p in ctx.PostCodes
where p.postalcode.Equals(client.PostCode.postalcode)
select p).First();
,其中從ASP.NET MVC視圖形式提供client
對象。此代碼似乎設置PostCode相關的實體罰款。但是在調用SubmitChanges()時,我收到以下異常:
已更改類型爲'PostCode'的對象的成員'postalcode'的值。定義對象身份的成員不能更改。考慮添加一個具有新身份的新對象,並刪除現有的對象。
所以我目前無法更改相關實體。 Linq to Sql是如何完成的?
UPDATE:
經過進一步的審查和排除故障,我發現,問題出在ASP.NET MVC的UpdateModel()調用。如果我調用UpdateModel()以用編輯的數據更新現有實體,則PostCode的FK分配有問題。如果我不調用UpdateModel並手動完成,它就會起作用。 任何想法在UpdateModel()中出現錯誤,它無法正確設置與外鍵實體的關係?
我正在更新此問題並開始賞金。這個問題被簡化了。如何在ASP.NET MVC Edit視圖中更新項目(相關實體爲FK)時成功使用L2S和UpdateModel()
你確定你根本沒有改變PostCode對象嗎?您可以在調用SubmitChanges()方法之前發佈您調用的代碼嗎? – willvv 2010-08-31 17:50:54
這是我對PostCode相關實體所做的一切。 – mare 2010-08-31 19:10:41