0
A
回答
1
我你改变了一个行动,你不想修改它,你可以根据上下文或将其取下它保持不变(就像破解)。
拆实体:
context.Detach(action);
设置状态不变:
context.ObjectStateManager.ChangeObjectState(action, EntityState.Unchanged);
请注意,如果您还操作和用户之间的变化关系,你还需要通过调用reaset的关系状态ObjectStateManager.ChangeRelationshipState
。
无论如何,你做错了事情,因为这种情况不应该发生。你应该只修改你想保存的实体。如果因为任何原因你只需要修改其中的一部分,那么克隆实体的方法和在其他上下文中修改它们的方法是正确的。上下文是工作单位。您只应修改属于同一商业交易一部分的实体。
+0
好的,谢谢我通过克隆解决了这个问题。你说得对,当你说这个解决方案不应该发生时,我做错了什么,但克隆有帮助。 – buda 2011-03-19 11:05:39
0
0
那么最好的选择将不会修改实体,除非你真的想要改变它们。但是你可以改变他们的状态。 “编程实体框架”一书详细介绍了这一点。
0
我通过创建实体副本来解决这个问题,包括所有孩子的操作(深层复制),以及当我更改它们时,我在副本上工作。
0
你可以(在你的情况Action
型),以“不变”使用ObjectStateManager
像这样改变改变对象的状态:
context.ObjectStateManager.ChangeObjectState(actionObject, EntityState.Unchanged);
我希望这有助于:)
PS:您可以使用此得到修改的对象列表:
var modifiedActions = context.Actions.Where(a=>a.EntityState!=EntityState.Unchanged);
相关问题
- 1. 从NSPersistentDocument中排除实体
- 2. 实体AddObject或SaveChanges
- 3. 实体框架ObjectContext在SaveChanges之前删除实体
- 4. 从查询中排除实体数据
- 5. 实体框架:当实体ID的SaveChanges
- 6. 实体框架SaveChanges错误
- 7. 实体框架7 SaveChanges
- 8. 实体linq savechanges问题
- 9. 实体框架SaveChanges问题
- 10. 实体SaveChanges抛出异常
- 11. SaveChanges vs实体框架中的SaveChangesAsync
- 12. 实体框架:从实体框架中的选择中排除列?
- 13. Breeze SaveChanges在删除实体时总是抛出DbUpdateConcurrencyException
- 14. 从GAE中删除实体
- 15. 实体框架SaveChanges()不工作?
- 16. 实体框架创建时调用SaveChanges
- 17. SaveChanges()实体框架问题4.1
- 18. 在SaveChanges后获取新增实体?
- 19. SaveChanges不适用于TPH实体
- 20. ADO.NET实体框架SaveChanges()不起作用
- 21. 实体框架覆盖的SaveChanges错误
- 22. ADO.NET实体框架SaveChanges不起作用
- 23. 实体框架的SaveChanges问题
- 24. 实体框架SaveChanges不保存数据
- 25. 尝试SaveChanges实体框架5
- 26. 实体框架SaveChanges - 自定义行为?
- 27. 实体框架 - 上的SaveChanges异常
- 28. 使用Linq与OrderByDescending和SaveChanges的实体
- 29. 净实体多对多的SaveChanges
- 30. 实体框架SaveChanges没有更新db
你说你只想保存'User'实体,但是对附加的'Action'实体有任何改变吗?如果没有,你不应该担心没有任何东西会被保存。你可以发表一些关于如何修改这些实体的代码吗? – 2011-03-18 23:25:17
我更改了两个实体,但我只想保存用户。 – buda 2011-03-18 23:41:23