1

所以假设我需要更新一个对象列表。

      using(db)
      {
          repository = new Repository<Publication>(db);
          foreach (KeyValuePair<int,int> item in publications)
          {
                Publication publication = repository.GetById(item.Key);
                if (publication != null)
                {
                    publication.Quantity = publication.Quantity - item.Value;
                    if (publication.Quantity > 0)
                        db.Publication.Attach(publication);
                }
          }
          try
          {
              db.SaveChanges();
          }
          catch (DbUpdateConcurrencyException e)
          {
              throw new Exception("Could not update the database", e);
          }
        }
    }

当我试图保存所有对象时,如果有人失败,它应该在catch块中,但我的问题是:如何获取引发异常的特定对象?

4

1 回答 1

3

你正在捕捉DbUpdateConcurrencyException,它有一个Entries属性,记录为:

获取表示无法保存到数据库的实体的 DbEntityEntry 对象。

所以基本上这给了你所有有问题的问题。

于 2013-01-17T21:03:06.147 回答