Я застрял с этой проблемой уже более недели.Надеюсь, кто-нибудь может указать мне правильное направление.
Я начну с краткого описания моей схемы.
Актив 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.
EDIT
После прослушивания я обнаружил, что это проблема STE.Проблема в том, что вы не можете сохранить график, который содержит несколько экземпляров одной и той же сущности, как указано здесь .Вот мой вопрос.
Как я могу добавить объект в свою коллекцию объектов.Новый объект может иметь связанные объекты, которые содержат тот же ключ, что и ключ в коллекции.Т.е. добавить новый актив, который может содержать тот же адрес, область, регион или страну.
Вот мои ограничения:
- Я должен использовать навигационную коллекцию, потому что онавлияет на пользовательский интерфейс.
- Я не могу предварительно выбрать все объекты, которые будут задействованы, поскольку набор данных слишком велик.
- Я должен иметь возможность делать моментальные снимки объекта в любое времячтобы сохранить историю и использовать ее для отмены любых изменений.
Мне известны возможные решения, предложенные Diego B Vega , но это не варианты, которые яможно использовать для моего решения.У кого-нибудь есть другие идеи?