我不需要执行重复查询,例如检查某些列是否唯一,因为此操作始终使用SQL Server约束执行。但是,SQL Server的默认错误消息没有为最终用户定义良好。
您是否知道更改/重新定义错误消息以使用户更友好?
PS。我通过Entity Framework 4.0执行所有查询。
答案 0 :(得分:3)
我知道这样做的唯一方法是捕获SqlException
,然后检查Number
属性。此属性是Error
属性中第一个Errors
的快捷方式,如果您担心多个错误条件的可能性,则可以使用该属性。
一旦知道了sql错误号,就可以提供更加用户友好的消息。不幸的是,除了做select * from sys.messages
之外,我不知道如何获得一个很好的常见sql server错误号列表,但搜索它们可能有点压倒性。
我只关心一些特定的错误号并手动创建错误条件以确定数字:
547 foreign key conflict
2601 unique index violation
2627 primary key violation
在任何其他错误编号上,我只提供一条通用消息,指出数据库存在问题。在所有情况下,我都会记录异常信息以供以后使用(使用NLog)。