【问题标题】:If I put entity items into a dictionary and update them there, do they update when I submit changes?如果我将实体项放入字典并在那里更新它们,它们会在我提交更改时更新吗?
【发布时间】:2016-11-18 23:02:54
【问题描述】:

我的意思是我有类似的东西

var foosById = context.Foos.ToDictionary(f => f.Id, f => f);
foreach(var foo in foosById)
{
   // modify foo.Value, possibly
}

然后我运行

context.SubmitChanges(); 

是否反映了这些变化?它们应该是,因为我的字典是对这些项目的引用,对吧?

【问题讨论】:

  • 你试过了吗?
  • 问问题就是回答问题。
  • 我也这么认为,没错。

标签: c# asp.net .net asp.net-mvc entity-framework


【解决方案1】:

是的,它应该按预期工作。如果您愿意,可以将 context.SubmitChanges(); 放在 foreach 循环本身中。但由于性能不佳,不推荐这样做。所以请始终尝试将 @ 987654323@ 在循环外。

但我想建议您使用SaveChanges() 而不是SubmitChanges()

这是这两种方法的区别。

SaveChanges() - 在事务中运行。如果任何脏的ObjectStateEntry 对象无法持久化,SaveChanges 将回滚该事务并引发异常。

SubmitChanges() - 启动事务,如果在 SubmitChanges() 执行时发生异常,将回滚。但是,这不会回滚内存中的更改或DataContext 跟踪的更改。这些更改需要手动回滚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2012-01-31
    • 2019-04-04
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多