Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取引发异常的特定元素_C#_Entity Framework 4.1 - Fatal编程技术网

C# 获取引发异常的特定元素

C# 获取引发异常的特定元素,c#,entity-framework-4.1,C#,Entity Framework 4.1,假设我需要更新一个对象列表 using(db) { repository = new Repository<Publication>(db); foreach (KeyValuePair<int,int> item in publications) { Publication publication = repository.GetById(item.Key

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

      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);
          }
        }
    }
使用(db)
{
存储库=新存储库(db);
foreach(出版物中的KeyValuePair项)
{
Publication Publication=repository.GetById(item.Key);
如果(发布!=null)
{
publication.Quantity=publication.Quantity-item.Value;
如果(publication.Quantity>0)
db.出版物。附件(出版物);
}
}
尝试
{
db.SaveChanges();
}
catch(dbupdateconcurrency异常)
{
抛出新异常(“无法更新数据库”,e);
}
}
}

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

您正在捕获
dbupdateCurrencyException
,该对象有一个属性,记录为:

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

所以基本上这会给你所有有问题的答案