У меня есть комбинация сервисов RIA и nHibernate. nHibernate настроен на использование идентификатора на стороне базы данных. Таким образом, новые сущности отправляются с 0 для идентификатора. nHibernate работает как надо. Он обновляет сгенерированные ключи из базы данных и обновляет сайты.
У меня есть пример с композиционной иерархией. Моя сущность сложна, у нее есть две коллекции.
InvestObject
- MaterialItems
- WorkItems
Я работаю с этой структурой в одной единице работы. Получение и отображение данных в приложении Silverlight - это не проблема. Но если я пытаюсь добавить более одного элемента в коллекцию MaterialItems на стороне клиента, при сохранении я получаю эту ошибку:
Операция отправки не удалась. Недействительным
ChangeSet: только одна запись для данного
Экземпляр сущности может существовать в
Изменения. в
System.ServiceModel.DomainServices.Server.ChangeSet.ValidateChangeSetEntries (IEnumerable 1
changeSetEntries) at
System.ServiceModel.DomainServices.Server.ChangeSet..ctor(IEnumerable
1
changeSetEntries)
Существует быстрое исправление на стороне клиента, просто для создания фиктивных отрицательных идентификаторов для Материала. Это работает для RIA и сохранение распространяется на стороне сервера. Но тогда nHibernate запускает ошибку, потому что ожидает 0 для всех новых идентификаторов, а не для заданного значения (). Так что это не хорошо.
Наконец, я обманул nHibernate, сбросив все новые идентификаторы на 0. Но это не делает меня счастливым. Это грязное уродливое решение.
Пожалуйста, помогите