2011-01-19 3 views
3

У меня есть комбинация служб RIA и nHibernate. nHibernate настроен на использование идентификации на стороне базы данных. Поэтому новые объекты отправляются с 0 для id. nHibernate работает так, как должно. Он обновляет сгенерированные ключи из базы данных и обновлений.Услуги RIA и nHibernate вставить новую проблему

У меня есть пример с композиционной иерархией. Моя сущность сложна, она имеет две коллекции.

InvestObject 
- MaterialItems 
- WorkItems 

Я работаю с этой структурой в одной единице работы. Geting и показ данных в приложении Silverlight не проблема. Но если я пытаюсь добавить более одного элемента в коллекции MaterialItems на стороне клиента, при сохранении я получаю эту ошибку:

Submit operation failed. Invalid ChangeSet : Only one entry for a given entity instance can exist in the ChangeSet. at System.ServiceModel.DomainServices.Server.ChangeSet.ValidateChangeSetEntries(IEnumerable 1 changeSetEntries) at System.ServiceModel.DomainServices.Server.ChangeSet..ctor(IEnumerable 1 changeSetEntries)

Там есть быстрое решение на стороне клиента, просто сгенерировать фиктивные отрицательные идентификаторы, для материала , Это работает для RIA, и сохранение распространяется на сервер. Но затем nHibernate вызывает ошибку, так как он ожидает 0 для всех новых идентификаторов, а не для данного значения(). Так что это не нормально.

Наконец-то я обманул nHibernate, переведя все новые идентификаторы на 0. Но это не делает меня счастливым. Это грязное уродливое решение.

Пожалуйста, помогите

ответ

0

Это было некоторое время, так как я сделал это так, детали туманны, но я думаю, что вы в принципе не может использовать идентификаторы, которые создаются в БД с RIA услуг. Вместо этого мы использовали алгоритм HiLo.

Смежные вопросы