当发生唯一约束异常时,如何在.NET Core中向UI发送消息;我想返回JSON,而不是MVC / Razor方法。
答案 0 :(得分:1)
我想你一直在看我的文章Catching Bad Data in Entity Framework。在那里,我描述了一种捕获SQL错误的方法,并将其转换为EF Core的验证错误。
<强>更新强>
在回答您的后续问题时,我可以向您指出与我正在撰写的书籍Entity Framework Core in Action相关的代码。在此我构建了一个名为SaveChangesSqlCheck
的方法,其中包含检查sql错误的代码。您可以使用此方法而不是调用SaveChanges
,它将返回ValidationResult
。
我的书已关联git repository我在书中展示的所有内容都进行了单元测试。以下是单元测试的链接,以查看您如何拨打SaveChangesSqlCheck
,然后调用SaveChangesSqlCheck
代码本身。
SaveChangesSqlCheck
代码:https://github.com/JonPSmith/EfCoreInAction/blob/Chapter10/DataLayer/EfCode/SaveChangesSqlCheck.cs 注意:您需要以特殊方式格式化唯一约束名称 - 有关示例,请参阅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"
}
我希望有所帮助。