首页 > 解决方案 > 如何在 saveChanges() 中获取错误的实体

问题描述

当我可以saveChanges()为某些实体而一个实体是错误的时,我会去exception捕获并且我想插入记录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

                }

标签: c#entity-framework-6

解决方案


试试看 :

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


推荐阅读