我已经被这个问题困扰了一个多星期了。希望有人能指出我正确的方向。
我首先简要描述一下我的架构。
资产 1--->1 地址 *-->1 地区 *-->1 地区 *-->1 国家
包 1-->* 资产
使用自我跟踪实体 (STE) + WCF。
脚步:
- 调用数据存储以获取资产列表。
- 调用数据存储以获取软件包列表。
- 用户选择一个包并为其分配一些资产。
- 保存包。
在第 2 步中,调用使用地址的预先加载。
from p in context.Assets.Include("Address.Area.Region.Country")
这是尝试调用时的错误
context.Packages.ApplyChanges(package)
AcceptChanges 无法继续,因为对象的键值与 ObjectStateManager 中的另一个对象冲突。在调用 AcceptChanges 之前确保键值是唯一的。
编辑
在窥探之后,我发现这是一个 STE 问题。问题是您无法保留包含此处概述的同一实体的多个实例的图形。这是我的问题。
如何将实体添加到我的实体集合中。新实体可能具有包含与集合中已有的相同键的相关实体。即添加可能包含相同地址、区域、地区或国家实体的新资产。
这是我的约束:
- 我必须使用导航集合,因为它会影响 UI。
- 我无法预取将涉及的所有实体,因为数据集太大了。
- 我必须能够随时拍摄实体的快照,以便保留历史记录并使用它来“撤消”任何更改。
我知道Diego B Vega建议的可能解决方案,但这些不是我可以用于我的解决方案的选项。有没有人有其他想法?