我正在使用 Entity Framework 4(使用自跟踪实体),并访问一个视图,即两个表的合并。因此,当我更新视图的信息时,我将视图的 STE 发送到访问数据库的存储库。
我做了以下事情:
当我收到包含更新信息的视图时,我创建了我的 STE1 和 STE2。当我创建一个 STE 时,它是如何使用添加状态创建的。那么我如何知道状态被修改的观点的STE的状态,我用方法改变了我的两个STE的状态MarkedAsModified
。
然后,我如何在视图的 STE 中查看这两个表的信息,我将视图中的信息传递给正确的 STE,并将 STE 中的更改应用到objectContext
.
最后我制作了saveChanges
. 但在这一步中,我收到一个Optimistic concurrency exception
. 我认为这是因为 STE 从状态传递到Added
到Modified
所以上下文检测到在创建和之间有一些修改SaveChanges
,但我也尝试AcceptChanges
在 STE 中,后来标记为已修改和,最后应用更改SaveChanges
,但是问题仍然存在。
我该如何解决这个问题?有更好的方法来使用视图和实体框架 v4?
谢谢。戴姆洛克。
编辑1:我仍然有问题。我的代码如下:
组件 myComponent = new Components(); //这是一个 STE myComponent.Rereference = myView.Reference; ... //其他属性 myComponent.MarkedAsModified(); //这是必需的,因为我要更新信息,不添加新寄存器。myContext.ApplyChanges("组件", myComponent); miContexto.SaveChanges();
在 saveChanges 中,我得到了异常:更新、插入或删除语句影响了意外数量的行 (0)。自加载实体后,实体可能已被修改或删除。刷新 ObjectStateManager 条目。
哪个是问题?我可以不修改创建的新STE吗?
谢谢。