Sql 将唯一约束的异常发送到.NET core中的UI

Sql 将唯一约束的异常发送到.NET core中的UI,sql,.net,linq,unique,Sql,.net,Linq,Unique,当发生唯一约束异常时,如何在.NET Core中向UI发送消息;我想返回JSON,而不是MVC/Razor方法 我想你一直在看我的文章。在这里,我描述了一种捕获SQL错误并将其转换为EF核心验证错误的方法 更新 在回答您的后续问题时,我可以向您指出与我正在撰写的书相关的代码。在本文中,我构建了一个名为SaveChangesSqlCheck的方法,其中包含用于检查sql错误的代码。您将使用此方法而不是调用SaveChanges,它将返回验证结果 我的书将我在书中展示的几乎所有内容都与单元测试相关联

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

我想你一直在看我的文章。在这里,我描述了一种捕获SQL错误并将其转换为EF核心验证错误的方法

更新

在回答您的后续问题时,我可以向您指出与我正在撰写的书相关的代码。在本文中,我构建了一个名为
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,但当唯一约束阻止将副本写入字段时,两者都不会触发。