gpt4 book ai didi

c# - 如何从 SQLException 中获取准确的 "constraint name"

转载 作者:太空狗 更新时间:2023-10-29 23:22:13 25 4
gpt4 key购买 nike

有没有办法从 C#“Microsoft SQL 异常”、错误号 2601 或 2627 中获取准确的“约束名称”\“索引名称”,但不解析“消息属性”的文本?

例如:

catch (SqlException e)
{
switch (e.Number)
{
case 2601:
/* Here i want to know the constraint name in case i have
more than one on a specific table, so i will be able to
display the correct error message to the user.

For example:

case IX_Username:
throw new Exception("Username duplication")
case IX_PhoneNumber:
throw new Exception("PhoneNumber duplication")

*/
break;
default:
throw;
}
}

最佳答案

对约束使用命名约定,例如将这些命名为始终包含下划线,例如 FK_XxxUQ_Xxx 然后使用正则表达式解析这样的名称的错误

    var match = Regex.Matches("Foreign key FK_Xxx violation.", @"\b\w*_\w*\b")
.Cast<Match>().FirstOrDefault();
return match != null ? match.Value : null;

关于c# - 如何从 SQLException 中获取准确的 "constraint name",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26424744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com