2011-06-23 51 views
3

我想在插入失败时抛出自定义异常,这违反了PK/FK关系。 现在,LINQ TO SQL引发SQLException,我想抛出一个更具体的异常,如CategoryException。LINQ to SQL中的自定义异常

回答

2

当你赶上SQLException你可以检查它Number财产或导航到其Errors财产,并检查它是否包含任何与SqlError数量547 - 这应该是限制违规。如果您需要详细说明违反了哪些约束条件以及哪些表格您必须真正将消息解析为@tyrongower提到的内容。该消息的模式是:

The %ls statement conflicted with the %ls constraint "%.*ls". The conflict occurred in database "%.*ls", table "%.*ls"%ls%.*ls%ls. 

编辑:

根据不同的应用,你正在开发你应该知道的本地化的类型。 SQL Server可以本地化其错误消息,因此如果使用不同的区域设置将应用程序部署到服务器,则您的异常消息解析将不起作用。

+0

那么,消息编号应该是正确的答案? – pokrate

+0

是的SQL服务器有大量的预定义的错误,它通过它的编号在'sysmessages'中搜索错误信息。 –

2

您可能需要捕获SQLException并解析邮件正文,然后抛出所需的自定义异常。