如何在saveChanges()中获得错误的实体

时间:2018-07-12 06:27:53

标签: c# entity-framework-6

当我可以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

                }

1 个答案:

答案 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;
}