我有3代表一个多一对多的关系:ProgramUserGroup和功能是两个主表,以及它们之间的联系是LinkFeatureWithProgramUserGroup,在那里我有两个父表的外键关系。强类型数据集:将许多一对多关系
我有一个插入数据集:我想向ProgramUserGroup添加一个新行,并向LinkFeatureWithProgramUserGroup表添加一个相关(现有)特征。 当插入新行,我设置的默认ID为-1:
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <DataSetUserGroup xmlns="http://tempuri.org/DataSetUserGroup.xsd">
<ProgramUserGroup diffgr:id="ProgramUserGroup1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<id>-1</id>
<Name>99999999999</Name>
<Active>false</Active>
</ProgramUserGroup>
<LinkFeatureWithProgramUserGroup diffgr:id="LinkFeatureWithProgramUserGroup1" msdata:rowOrder="0" diffgr:hasChanges="inserted">
<id>-1</id>
<Feature_id>7</Feature_id>
<ProgramUserGroup_id>-1</ProgramUserGroup_id>
</LinkFeatureWithProgramUserGroup> </DataSetUserGroup> </diffgr:diffgram>
,而我更新的表,我得到一个错误:
“INSERT语句冲突与外键约束“FK-LinkFeatu-Progr-7DCDAAA2”。冲突发生在数据库“x”,表“dbo.ProgramUserGroup”,列'id'。“
用于更新的代码如下:
DataSetUserGroupTableAdapters.LinkFeatureWithProgramUserGroupTableAdapter lfa = new LinkFeatureWithProgramUserGroupTableAdapter();
DataSetUserGroupTableAdapters.ProgramUserGroupTableAdapter pug = new ProgramUserGroupTableAdapter();
pug.Update(dsUserGroup.ProgramUserGroup);
lfa.Update(dsUserGroup.LinkFeatureWithProgramUserGroup);
如果我检查ProgramUserGroup表的新行的ID,它已经从-1更新@@身份(如1099),所以也没关系 - 它插入新行。
但是在LinkFeatureWithProgramUserGroup表中,相关的ProgramUserGroup.ID值仍然是-1,它没有被更新。
我该如何强制更新链接表的密钥? 我试过
pug.Update(dsUserGroup.ProgramUserGroup);
dsUserGroup.Merge(dsUserGroup.ProgramUserGroup);
lfa.Update(dsUserGroup.LinkFeatureWithProgramUserGroup);
但没有解决问题:(
感谢,
湾
我已经想通了 - 但是感谢好的教程,我希望这将有助于其他人也:) – balint 2009-12-27 00:13:17