我想在插入失败时抛出自定义异常,这违反了PK / FK关系。 现在,LINQ TO SQL抛出SQLException,我想抛出一个更具体的异常,如CategoryException。
答案 0 :(得分:2)
您可能需要捕获SQLException并解析消息体,然后抛出所需的自定义异常。
答案 1 :(得分:2)
当您抓住SQLException
时,您可以检查其Number
属性或导航到其Errors
属性并检查其是否包含任何编号为547的SqlError
- 应该是约束违规。如果您需要有关违反约束的详细信息以及在哪个表上您必须真正解析消息,如@tyrongower所述。消息的模式是:
The %ls statement conflicted with the %ls constraint "%.*ls". The conflict occurred in database "%.*ls", table "%.*ls"%ls%.*ls%ls.
编辑:
根据您正在开发的应用程序类型,您应该了解本地化。 SQL Server可以本地化其错误消息,因此如果使用不同的语言环境设置将应用程序部署到服务器,则异常消息解析将不起作用。