我有两个 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 上,但我只是对为什么它的工作方式不同感到困惑!?