我能够创建一个实体对象,设置一些默认值并将其添加到管理器中。现在,我希望使用manager.hasChanges()跟踪对它的更改。由于某些原因,这总是返回true。在跟踪数据库中新创建的实体时,我是否也应该检查其他内容呢?
发布于 2014-04-28 23:10:16
一旦您将它“添加”到EntityManager中,根据定义,它就会发生更改,因为它处于“添加”状态。“hasChanges”意味着需要保存它,因为它与持久性服务提供的内容“不同”(在本例中,实体尚未被“保存”)。
您可以做的是在“未更改”状态下将实体“附加”到EntityManager。
myEntityManager.attachEntity(newEntity, breeze.EntityState.Unchanged);在这种情况下,你所做的任何改变都会以你想要的方式工作,但是.
微风现在将考虑您新附加的实体已经持久化,如果您试图保存它,那么保存将失败,因为微风将尝试‘修改’持久化实体,而不是创建一个新的实体。
如果你真的想完成你的请求,你将需要使用‘附加’,但也需要跟踪这些实体,并标记他们‘添加’,然后你试图保存他们。
发布于 2014-04-28 23:08:22
EntityManager将具有EntityState.Added的实体视为“更改”实体。这就是为什么HasChanges总是返回true的原因。
在这种情况下,您应该侦听EntityManager.entityChanged事件来跟踪更改。
请参阅entityChanged
https://stackoverflow.com/questions/23352017
复制相似问题