将 UNIQUE 约束的异常发送到 .NET 核心中的 UI

Send exception for UNIQUE constraint to UI in .NET core

当出现唯一约束异常时,.NET Core中如何消息UI;我要returnJSON,而不是MVC/Razor方法。

我想你一直在看我的文章Catching Bad Data in Entity Framework。在那里,我描述了一种捕获 SQL 错误并将其转化为 EF Core 验证错误的方法。

更新

为了回答您的后续问题,我可以向您指出与我正在写的书相关的代码,Entity Framework Core in Action。在此我构建了一个名为 SaveChangesSqlCheck 的方法,其中包含检查 sql 错误的代码。您将使用此方法而不是调用 SaveChanges,它将 return 一个 ValidationResult.

我的书与 git repository 相关联,其中我对书中展示的几乎所有内容进行了单元测试。下面是指向单元测试的链接,以查看您如何调用 SaveChangesSqlCheck,然后是 SaveChangesSqlCheck 代码本身。

注意:您需要以特殊方式格式化唯一约束名称 - 请参阅 https://github.com/JonPSmith/EfCoreInAction/blob/Chapter10/Test/Chapter10Listings/EfCode/Configuration/MyUniqueConfig.cs 示例。


如果您打算使用本文中显示的代码,那么您需要做的就是使用 JsonConvert.SerializeObject(errors) 将其转换为 json。我已经包含了一些代码,因此您可以看到 json 输出的样子。

var error = new ValidationResult("error message");
var jsonList = JsonConvert.SerializeObject(error,
    new JsonSerializerSettings { Formatting = Newtonsoft.Json.Formatting.Indented });

此 json 输出将是

{
   "MemberNames": [],
   "ErrorMessage": "error message"
}

希望对您有所帮助。