我有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