我是一位有DAO和SQL Server的noob,當我嘗試插入時遇到問題值分成兩個有關係的表。表Photos
具有gpsId
字段,該字段與GPSLocations
表的id
字段具有外鍵關係。我想創建鏈接到一個新的GPSLocation新照片的條目,所以代碼看起來是這樣的:嘗試進行分層更新會導致錯誤「無法插入外鍵值」
gpsRow = dataset.GPSLocations.AddGPSLocationsRow("0.0N", "3.2W");
dataset.Photos.AddPhotosRow(@"c:\path\file.jpg", gpsRow);
tableAdapterManager.UpdateAll(dataset);
然而這會導致以下錯誤:
A foreign key value cannot be inserted because a corresponding primary key value does not exist. [ Foreign key constraint name = photoToGps ]
我使用SQL Server CE。我的理解是正確的,TableAdapterManager
應該處理這個分層更新?我只是將這些表拖到XSD視圖上,並依靠其自動創建包裝類。我是否需要改變關係的任何內容(例如使其成爲外鍵約束)?我注意到,在某些情況下,gps編號是正面的,有時是負面的,是相關的嗎?
編輯: 我也確保更新屬性設置爲CASCADE,這會導致相同的錯誤。分層更新設置爲true,設計器中的兩個表之間存在外鍵約束。
也許我們需要更多信息。我假設GPSLocations表中的第三個字段是id字段並被標記爲主鍵。有沒有理由不是身份領域?爲什麼照片沒有id字段(可能與您的問題無關,我只是想更多地瞭解該模式)。 – 2010-09-22 04:40:30
對不起,第三個字段是誤導性的,所以我刪除了它,它只是一個數據成員,而不是一個身份。 GPSLocations表有一個標識列'id'(也是主鍵),它與'Photos'表的'gpsId'列有關係 – 2010-09-22 21:08:56