сопоставление пользовательских коллекций nhibernate - PullRequest
1 голос
/ 12 октября 2011

Как можно сопоставить свойство коллекции конкретного класса, а не интерфейса?Это должен быть конкретный класс!У меня нет контроля над классом, который я хочу отобразить, поэтому я не могу изменить интерфейс.

Сейчас я пытаюсь решить эту проблему, написав собственную реализацию IUserCollectionType и пользовательскую IPersistentCollectionреализация.

Но ... Следующее исключение остановило мой прогресс:

Test method ShouldSaveEntityWithSections threw exception: 
NHibernate.StaleStateException: Batch update returned unexpected row count from update;  actual row count: 0; expected: 1

Profiler показывает, что NHibernate не пытается вставить связанный объект в базу данных, но пытается обновить еговнешний ключ к родительскому объекту.

Отображение выглядит так:

<set name="Rows" table="Rows" lazy="false" cascade="all"
     collection-type="My.PersistentListType`1[Blabla.Row, Blabla], My">
  <key column="ParentID" not-null="true" />
  <one-to-many class="Blabla.Row, Blabla" />
</set>

Что происходит?Почему NHibernate не вставляет дочерние объекты в БД?

1 Ответ

1 голос
/ 14 октября 2011

Отвечая на мой собственный вопрос. Надеюсь, что это поможет кому-то, кто испытывает ту же проблему.

Этот человек должен проверить, что он или она не создает связанный объект в состоянии, в результате чего NHibernate думает, что он уже существует.

В моем случае я по ошибке установил свойство, сопоставленное в качестве первичного ключа, Guid.NewGuid() вместо Guid.Empty.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...