Методы отображения коллекции NHibernate «не удалось загрузить или инициализировать объект или коллекцию» - PullRequest
1 голос
/ 16 июля 2009

У меня есть следующие сопоставления:

<bag name="BList" table="A_TABLE" inverse="true" lazy="false" cascade="all-delete-orphan">
  <key column="A_ID"/>
  <one-to-many
     class="B, Model" />
</bag>

И

<many-to-one name="A"
             class="A, Model"
             column="A_ID"
             not-null="true" />

Выполнение вставки и обновлений работает нормально (при добавлении и удалении из коллекции), но выборка объектов всегда приводит к исключениям.

failed: NHibernate.Exceptions.GenericADOException : could not load an entity: [Model.B#5816932][SQL: SELECT ...]
  ----> System.NullReferenceException : Object reference not set to an instance of an object.

OR ...

NHibernate.Exceptions.GenericADOException : could not initialize a collection: [Model.A.BList#1364389][SQL: ...]
  ----> System.NullReferenceException : Object reference not set to an instance of an object.

... в зависимости от того, какой объект вы выбираете. Я уверен, что упускаю простую вещь, потому что она работала до того, как я реализовал cascade = "all-delete-orphan"

Любая помощь будет очень ценна.

1 Ответ

0 голосов
/ 17 июля 2009

Оказалось, что само отображение было правильным. Проблема возникла в конструкторе 1 объекта ...

У меня был конструктор по умолчанию без параметров, который был перегружен другим конструктором.

public B() : this(null) { }

Тогда у другого конструктора было что-то вроде

public B(A c)
{
    A= c;
}

В любом случае, снятие перегрузки с конструктора заставило все мои тесты пройти: D

...