2 つの SQL テーブルがあり、それぞれに 3 つの異なる整数フィールドで構成される複合キーがあります。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 についてですが、なぜ動作が異なるのか混乱しています!?