我正在尝试在我在另一个表中添加行之后更新表中的字段。 (该值只是为了表明该行已被导入)我以为我在这里使用了正确的代码,但是bool'Imported'字段没有更新。以下是相关代码:
using (DbContext db = new DbContext())
{
db.Details.Add(details);
db.SaveChanges();
newID = details.DetailsID;
AccessRepository rep = new AccessRepository();
AccessDetails detailUpdate = rep.GetByID(item.AccessDetailsTableID);
detailUpdate.Imported = true;
db.SaveChanges();
}
第一个SaveChanges调用有效,因为我正在尝试添加新行,但不是第二个。它成功地从存储库中检索数据,但只是不更新值。
为什么它可能不起作用的任何想法?
由于
答案 0 :(得分:1)
我认为这是因为您的AccessRepository使用与范围内的数据上下文(db)不同的数据上下文(在您发布的代码中)
您可以尝试在AccessRepository中使用SaveChanges方法,该方法在正确的数据上下文中执行相同操作。
但是,调用两次保存的问题是您丢失了单笔交易的好处。因此,如果这两个更新是相关的,那么你真的应该只调用一次SaveChanges。
我会在AccessRepository中创建一个Add方法和一个Save方法,然后使用类似的东西......
AccessRepository rep = new AccessRepository();
rep.Add(details);
AccessDetails detailUpdate = rep.GetByID(item.AccessDetailsTableID);
detailUpdate.Imported = true;
rep.Save();//this calls SaveChanges on a single data context
希望有所帮助
答案 1 :(得分:0)
你应该在GetById()方法中使用newId吗?
using (DbContext db = new DbContext())
{
db.Details.Add(details);
db.SaveChanges();
newID = details.DetailsID;
AccessRepository rep = new AccessRepository();
AccessDetails detailUpdate = rep.GetByID(newID);
detailUpdate.Imported = true;
db.SaveChanges();
}