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对象,这些对象表示无法保存到数据库的实体
所以基本上这会给你所有有问题的答案