Sql 将唯一约束的异常发送到.NET core中的UI
当发生唯一约束异常时,如何在.NET Core中向UI发送消息;我想返回JSON,而不是MVC/Razor方法 我想你一直在看我的文章。在这里,我描述了一种捕获SQL错误并将其转换为EF核心验证错误的方法 更新 在回答您的后续问题时,我可以向您指出与我正在撰写的书相关的代码。在本文中,我构建了一个名为Sql 将唯一约束的异常发送到.NET core中的UI,sql,.net,linq,unique,Sql,.net,Linq,Unique,当发生唯一约束异常时,如何在.NET Core中向UI发送消息;我想返回JSON,而不是MVC/Razor方法 我想你一直在看我的文章。在这里,我描述了一种捕获SQL错误并将其转换为EF核心验证错误的方法 更新 在回答您的后续问题时,我可以向您指出与我正在撰写的书相关的代码。在本文中,我构建了一个名为SaveChangesSqlCheck的方法,其中包含用于检查sql错误的代码。您将使用此方法而不是调用SaveChanges,它将返回验证结果 我的书将我在书中展示的几乎所有内容都与单元测试相关联
SaveChangesSqlCheck
的方法,其中包含用于检查sql错误的代码。您将使用此方法而不是调用SaveChanges
,它将返回验证结果
我的书将我在书中展示的几乎所有内容都与单元测试相关联。下面是一个单元测试的链接,以查看如何调用savechangesqlcheck
,然后是savechangesqlcheck
代码本身
- 单元测试:
代码:SaveChangesSqlCheck
- 捕获唯一错误的方法:
如果您计划使用本文中显示的代码,那么您需要做的就是使用
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"
}
我希望这能有所帮助。你到底想做什么?是否尝试从sql记录错误?将sql语句放在try-catch块中,并在catch块中将错误解析为json.Ok,因此在我的dBContext文件中使用LINQ/FluentAPI,我有:modelBuilder.Entity().HasAlternateKey(p=>p.ProductName);我的控制器文件有:try{await}u context.SaveChangesAsync();}catch(DbUpdateConcurrencyException){}可能的捕获可能是DbUpdateException,但当唯一约束阻止将副本写入字段时,两者都不会触发。