当我可以saveChanges()
处理某些实体,而一个实体错了时,我转到exception
catch,我想插入记录错误的stateEntity
,如果可以,得到我可以做到的特定实体。
添加,更新和删除
我可以抓住错误的实体吗?
我的保存方法:
public long save(IResponse res, Context context)
{
try
{
foreach (Entity ent in response.Entities)
{
context.Entry(ent).State = ent.getEntityState();
}
return context.SaveChanges();
}
catch (Exception ex)
{
string errorMessages = ex.InnerException.InnerException.ToString();
res.ExceptionDBDesc = errorMessages;
res.WrongEntState= ??? //add/modify/remove
}
答案 0 :(得分:2)
尝试一下:
try
{
_context.SaveChanges();
}
catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
{
Exception raise = dbEx;
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
string message = string.Format("{0}:{1}", validationErrors.Entry.Entity.ToString(), validationError.ErrorMessage);
//raise a new exception inserting the current one as the InnerException
raise = new InvalidOperationException(message , raise);
}
}
throw raise;
}