[英]Is there a way of preventing EF6 from reverting a property on an entity post Save?
我使用CodeFirst和EF6与各州单独的映射。
我有一个奇怪的情况如下:
如果我明确标记直到:
Cache.TodaysCashDraw.ObjectState = ObjectState.Unchanged;
无论是否应用对象状态,都将还原该值。
Cache.TodaysCashDraw.ObjectState = ObjectState.Modified;
但是,如果我将其标记为已修改,则将99.01m提交到数据库中。
因此,基本上,直到我的耕作对象上出现的任何更改都将被还原,现在可以了,但是我想解释为什么? 理想情况下,我希望持久化对象上的更改保持不变,而不要像上面显示的那样还原。 由于在工作日内耕作机将多次更改,因此我只想在必要时进行耕作机更改。 订单和物料应立即保存,但内存中的Till对象仅需要反映已针对该订单处理的订单。 这是我目前的想法和方法,在EF4和DB First中效果很好。
有人知道这里发生了什么,解决此问题的理想方法是什么?
me脚的备份计划是立即执行直到更改为止。
在断开连接的情况下,一种方法是分离有问题的实体:
// detach the till to prevent it from being tracked.
Cache.TodaysCashDraw.ObjectState = ObjectState.Detached;
然后,当您需要保存其状态时,只需重新附加它即可:
_ctx.Context.Set<CashDrawsMony>().Attach(_till);
这完全解决了我的问题。
更糟糕的是,我实际上正在查看Attach方法,想知道它的用途是什么? =)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.