MR.*_*ABC 6 c# entity-framework
我尝试使用重新加载功能丢弃一些更改.我得到了InvalidOperationException.我该如何防止这种情况?
DbContext.SaveChanges();
//Entity is in Unchanged state
//Make some changes to an entity
//Change state to modified
DbContext.Entry(entity).Reload();
Run Code Online (Sandbox Code Playgroud)
InvalidOperationException
调用了EntityMemberChanged或EntityComplexMemberChanged,而没有首先在具有相同属性名称的同一更改跟踪器上调用EntityMemberChanging或EntityComplexMemberChanging.有关正确报告更改的信息,请参阅实体框架文档.
编辑:
我启用和禁用ProxyCreationEnabled,LazyLoadingEnabled.
尝试了不同的方法.所有这些尝试都抛出相同的异常.
var objContext = ((IObjectContextAdapter)context).ObjectContext;
objContext.Refresh(RefreshMode.ClientWins, entry.Entity);
Run Code Online (Sandbox Code Playgroud)
entry.OriginalValues.SetValues(entry.GetDatabaseValues());
Run Code Online (Sandbox Code Playgroud)
希望我能得到解决方案.不想处置完整的DbContext来重新加载所有数据.
“值得注意的是,无论您是否通过代理类使用更改跟踪或显式调用entitymemberchanged,该错误都会显示。每当我在创建 objectcontext/objectstatemanager 的线程之外执行entitymemberchanging和更改时,我似乎都会收到错误,无论我是同步还是异步执行这两个函数,都使用锁或让线程显式休眠。在我看来,这是 objectstatemanager 的某种“真正的错误”,而不是简单的方法解决方法。鲍尔在你的球场上,MSFT。”
PS 评论太长了。
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |