所以我在捕捉向数据库添加新记录的异常时遇到了问题。
我正在使用实体框架
这是我的代码:
public void AddNewStandardEngineeredModel(StandardEngineeredModel model)
{
using (context = new LabelPrintingContext())
{
try
{
context.EngineeredModels.Add(model);
context.SaveChanges();
}
catch (SqlException ex)
{
if (ex.Number == 2601)
{
//Violation of primary key. Handle Exception
}
else throw;
}
}
}
我还尝试了以下方法:
public void AddNewStandardEngineeredModel(StandardEngineeredModel model)
{
using (context = new LabelPrintingContext())
{
try
{
context.EngineeredModels.Add(model);
context.SaveChanges();
}
catch (UpdateException ex)
{
var sqlException = ex.InnerException as SqlException;
if (sqlException != null && sqlException.Errors.OfType<SqlError>()
.Any(se => se.Number == 2601))
{
// it's a dupe... do something about it
}
else
{
// it's something else...
throw;
}
}
}
}
如果我只是执行 catch(Exception Ex) 它将捕获异常,但我想检查该数字以更好地响应我的用户。这样,如果要添加副本,我可以让他们知道并适当地修复它。
这是错误的图片:
不太确定还有什么可以尝试捕获特定异常。任何建议都会有所帮助。

