在EF 4.0调用时,是否可以在SQL SERVER中为UNIQUE KEY约束定义错误消息?

时间:2011-12-09 02:25:24

标签: sql-server entity-framework entity-framework-4 constraints

我不需要执行重复查询,例如检查某些列是否唯一,因为此操作始终使用SQL Server约束执行。但是,SQL Server的默认错误消息没有为最终用户定义良好。

您是否知道更改/重新定义错误消息以使用户更友好?

PS。我通过Entity Framework 4.0执行所有查询。

1 个答案:

答案 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)。