【发布时间】:2020-09-12 02:38:10
【问题描述】:
我有一个将数据插入表的存储过程。
这是我从控制器方法调用存储过程的方式:
var insert_query = entities.Database.SqlQuery<Call_Info>("exec [dbo].[insert_call_info] @call_id, @user_id, @call_arrive, @call_end, @info",
new SqlParameter("call_id", call_id),
new SqlParameter("user_id", u_id),
new SqlParameter("call_arrive", call_arrive),
new SqlParameter("call_end", call_end),
new SqlParameter("info", info)
).ToList();
var jsonResult = JsonConvert.SerializeObject(insert_query); // <-- using Newtonsoft.Json
return Json(jsonResult);
如果我插入一个已经存储在表中的call_id 值,我会得到这个错误,这是正确的:
Message": "发生错误
违反 UNIQUE KEY 约束“UQ__Call_Inf__427DCE6904E3DF9B”。无法在对象“dbo.Call_Info”中插入重复键。重复键值为 (91390)。
有没有办法在控制器中捕获这个错误?
【问题讨论】:
-
修改您的存储过程以完全避免此类错误。例如,在 INSERT 语句中添加 WHERE 子句,或将 INSERT 替换为更新任何现有记录的 MERGE
-
@PanagiotisKanavos 谢谢!我将使用它来更新存储过程。
标签: c# sql-server asp.net-mvc stored-procedures