У меня есть это отображение в одном классе:
<class name="Parent">
<set name="Activity" table="ChangeLogs" order-by="ChangeDate desc" cascade="all-delete-orphan">
<key column="RequestID" />
<one-to-many class="ChangeLog" />
</set>
А это в другом:
<class Name="Child">
<many-to-one name="Request" class="Request" column="RequestID" />
В родительском, загруженном в текущую транзакцию, я добавляю в коллекцию:
parent.Activity.Add(new Child(){/* properties, etc */});
А потом я совершаю транзакцию. Любые изменения в родительском элементе сохраняются в базе данных с помощью вызова обновления, но я не могу заставить этих дочерних элементов вставлять, независимо от значений каскада или inverse = true / false / just-save-Уже. Некоторое время я бился головой об этом, читая примеры / документацию / и т. Д., И я не понимаю, почему это не сработало. Я что-то упустил? Я убивал сервер и перестраивал после каждого изменения, чтобы убедиться, что все обновляется, но нада.
Что еще хуже, иногда сработал , с различными значениями для инверсии, иногда путем добавления Request = parent к дочернему элементу, иногда путем сохранения дочернего элемента отдельно перед добавлением ... перестает работать позже. Я ошеломляю o_O
edit: После того, как это было опубликовано, были предприняты попытки, перестройка + перезапуск сервера между каждым, ни один из которых не вызывает вызов вставки или ошибки:
<set inverse=true>
parent.Activity.Add(new Child(){Request=parent})
<set inverse=true>
parent.Activity.Add(new Child(){})
<set>
parent.Activity.Add(new Child(){Request=parent})
<set>
parent.Activity.Add(new Child(){})
<set inverse=false>
parent.Activity.Add(new Child(){Request=parent})
<set inverse=false>
parent.Activity.Add(new Child(){})
Это сработало:
<set>
Child c = new Child() {Request = parent};
parent.Activity.Add(c);
Session.Save(c);
Но тогда какой смысл устанавливать каскад, если он игнорируется?
изменить: после прочтения немного этого: http://nhibernate.info/doc/nh/en/index.html#example-parentchild-bidir Я пытался:
<class Name="Child">
<many-to-one name="Request" class="Request" column="RequestID" not-null=true />
со всеми 6 основными из них выше, без удачи.