好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

c# – 尝试进行分层更新会导致错误“无法插入外键值”

我有点像DAO和SQL Server的菜鸟,当我试图将值插入两个有关系的表时,我遇到了问题.表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 id是正面的,有时是负面的,这是相关的吗?

编辑:

我还确保将update属性设置为CASCADE,这会导致相同的错误.分层更新设置为true,并且设计器中的两个表之间存在外键约束.

它只是数据集的配置.双击Visual Studio的数据集设计器中的表之间的关系,选择“两个关系和外部键约束”选项,然后在“更新规则”字段中选择“级联”选项,必须选中它.

有关该主题的一些信息在MSDN中,您可以在这里查看http://msdn.microsoft.com/en-us/library/bb629317.aspx并转到相关主题.

查看更多关于c# – 尝试进行分层更新会导致错误“无法插入外键值”的详细内容...

  阅读:40次