如何設置屬性,以便在使用SaveChanges時保存多對一關係,並且不會導致:INSERT語句衝突與FOREIGN KEY約束...錯誤。實體框架/ .Net 4.0:POCO並保存多對一關係
很簡單,我有一個廣告和一個廣告類型,其中有很多廣告到一個AdType。廣告上有一個物業:
public class Ad
{
public Int32 AdTypeId { get; set; }
public virtual AdType AdType { get; set; }
}
爲了涵蓋這種關係。
當我這樣做:
someAd.AdType = someAdType;
該屬性設置就好了,但AdTypeId不是。不用擔心,因爲我會認爲這可以保存。
context.SaveChanges();
問題是在這一點上,試圖保存在AdTypeId列中的0值(導致的外鍵的問題),而不是使用對象分配ADTYPE財產弄清楚它應該插入AdTypeId列。
事情我知道:
- 此時someAdType是 堅持/有一個id。
- AdType屬性設置正確。
- AdTypeId爲0.
- 數據庫中存在外鍵關係。
- AdTypeId是主鍵。
- 我已經延期/延遲加載設置爲true
我還沒有真正試圖改變ADTYPE因爲它被設置爲允許延遲加載。
嘿,我面臨同樣的問題,並試圖用這個選項保存沒有成功。據我所知,AcceptAllChangesAfterSave不會嘗試檢測更改,而只會在保存後調用AcceptChanges(),使實體保持Unchanged狀態。如我錯了請糾正我。 – 2010-05-24 06:35:45