我一直在使用实体框架6,试图通过EF处理一些常见问题,如主/外键/唯一键约束。 EF给出了SqlException
作为InnerException
,似乎 - 就我发现到现在为止 - 理解实际问题的唯一方法是在该对象中使用错误代码?SqlExceptions的抽象(使用实体框架)
我想抽象这些例外通过捕获EF异常,并通过在InnerException
分析错误代码抛出自己的异常。我在这一点上有一些考虑。
SQL Server代码是否由服务器版本更改?我是否应该以不同的方式处理 不同版本的SQL Server,比如为2008,2012等创建不同的实现?
而不是SQL Server有可能使用其他SQL服务器,如 MySQL和我试图抽象这些 异常的另一个原因。
例如,在that问题接受的答案,我想捕获特定的错误,但不是重新抛出我想抛出自己的异常(S)。如果我不想做特别的事情,或者我没有任何特殊的例外情况,我可以创建并使用更通用的例外情况,我可以将原始例外情况存储在通用例外InnerException
字段中。
我读this博客文章,不幸的是有问题的情况下,是我第一次去的方式。我希望尽可能不使用任何第三方库(当然,这样做并不重要)。我想知道是否有测试和接受的方式做到这一点,否则我愿意接受任何建议。
但是,不应该像你的代码那样约束一个问题,你应该修复?所以你不想去捕捉那些例外 - 只是让他们扔掉? –
不,我想尽可能恢复(例如,客户想要添加数据库中存在的用户)。但是,EF异常不会像错误代码那样告诉细节。我想解释这些错误代码并抛出我自己的异常而不是EF。这是否明确? – Deniz
是的,我看到你在说什么,但你需要确保你没有掩盖和错误,你真的希望应用程序崩溃从 –