System.Data.Common.DbCommand を使用して、データベースに新しい行を挿入します。ポイントは、この行がすでに存在することです。
try
{
[...]
DbCommand insertCommand = [...]
insertCommand.ExecuteScalar();
[...]
}
catch (System.Exception exception)
{
[...]
throw;
}
System.Data.SqlClient.SqlException を明示的にキャッチすると、次のように ErrorNumber を評価できます。
try
{
//insertion code
}
catch(SqlException ex)
{
if(ex.Number == 2627)
{
//Violation of primary key. Handle Exception
}
}
SqlException のコンテキストでの ErrorNumber 2627 は、一意のキーの違反を意味します。https://msdn.microsoft.com/en-us/library/ms151757%28v=sql.110%29.aspxを参照してください。
ここまでは順調ですね。私は DbCommand を使用しているため、さまざまな種類のリレーショナル データベース管理システムを使用しているため、このような一意キー制約の違反を検出するためのより一般的な方法を探しています。
手伝ってくれてありがとう。