我有两个SQL表,每个表都有一个由三个不同整数字段组成的复合键。我已经添加了如下代码来向Table1添加记录。
try
{
Table1 newRow = new Table1
{
DomainID = domainID,
ConfigurationID = configID,
ReasonID = reasonID
};
data.Table1.InsertOnSubmit(newRow);
data.SubmitChanges();
}
catch(DuplicateKeyException)
{
// Message to user about no duplicates allowed.
}
如果用户尝试添加重复行并且我可以向他们显示消息等,这完全适用于我计划和捕获异常的方式。一切都很好。但是,我有用于插入Table2的代码(几乎相同,但在不同的页面上使用不同的DataContext),
try
{
Table2 newRow = new Table2
{
DomainID = domainID,
ConfigurationID = configID,
DirectionID = directionID
};
data.Table2.InsertOnSubmit(newRow);
data.SubmitChanges();
}
catch(DuplicateKeyException)
{
// Message to user about no duplicates allowed.
}
不会抛出DuplicateKeyException而是抛出SqlException。没什么大不了的,因为我仍然可以测试
e.Number = 2627
关于捕获的SqlException,但我只是为什么它的工作方式不同而感到困惑??