我是一位有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