更新主/子行

时间:2015-09-25 12:06:57

标签: c# sql-server-2005 datatable identity relation

我的表格CasesDegrees的关系为Cases.CID - CDegrees.CIDCID是具有AutoIncrement的Cases的主键。

两个表都以一种形式使用,并假设用户可以同时向两个表添加新记录,而不是将整个主/子数据保存在一个GUI操作中。

所以在我创建FK的数据集中,我设置了#34;关系和外键约束"为了确保在更新Cases表中的新记录期间,检索到的IDENTITY值将导致子记录从-1更新为检索到的CID值。

当我更新Cases适配器时,它会导致检索新的IDENTITY值,并且CDegrees子记录中的级联更新也可以正常工作。但是CDegrees的更新导致插入脚本的[CID] = - 1(原始值)。我将@CID的插入参数CDegrees更改为"建议"版本但发生了相同的情况(见于SQL事件探查器)。

实际上我的任务更复杂,我只是简化了本地化问题的任务。

更清楚地描述。 在更新之前 [Cases]和[CDegrees]都有一个新的记录[CID] = - 1 [案例]更新后[案例]和[CDegrees]都有新的CID身份值,只有[CDegrees]。[CID]" Current"值为-1和"建议"是检索身份。 但是当我调用[CDegrees]的数据集更新时,无论我是否将@CID参数源指定为[CID]的建议值,它都会向[CID] = - 1发送插入命令到SQL。

1 个答案:

答案 0 :(得分:0)

这很奇怪也很有趣。似乎对细节的日历控制以某种方式导致但是根据CID字段的主标识值阻止细节数据级联更新。 我只是将日期字段绑定控件从MonthCalendar更改为DateTimePicker并且它有效。