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

时间:2017-09-08 04:47:41

标签: sql .net linq unique

当发生唯一约束异常时,如何在.NET Core中向UI发送消息;我想返回JSON,而不是MVC / Razor方法。

1 个答案:

答案 0 :(得分:1)

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

<强>更新

在回答您的后续问题时,我可以向您指出与我正在撰写的书籍Entity Framework Core in Action相关的代码。在此我构建了一个名为SaveChangesSqlCheck的方法,其中包含检查sql错误的代码。您可以使用此方法而不是调用SaveChanges,它将返回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"
}

我希望有所帮助。