Беглый nhibernate, автоматизирующий один ко многим, делает внешний ключ нулевым

Я относительно новичок в NHberinate и использую его как альтернативу EF, потому что он отлично работает на Mono.

Все мои объекты сопоставлены с AutoMapping.

Проблема в том, что у меня есть отношения один ко многим. Один из классов Item имеет класс localizedText. Я также установил соглашение для Cascade all.

 public class CascadeAll : IHasOneConvention, IHasManyConvention, IReferenceConvention
 {
    public void Apply(IOneToOneInstance instance)
    {
        instance.Cascade.All();
    }

    public void Apply(IOneToManyCollectionInstance instance)
    {
        instance.Cascade.All();

    }

    public void Apply(IManyToOneInstance instance)
    {
        instance.Cascade.All();
    }
}

Когда я добавляю localizedText в мой класс Item, это хорошо работает, и таблица localizedText получает значения, записанные в таблицу, однако значение внешнего ключа "itemId" остается нулевым. Как я могу заставить это работать так, чтобы у элементов localizedText был objectId при добавлении?

Zack

1 ответ

Здорово, когда вы найдете ответ на свои вопросы.

Для правильного выполнения SQL, особенно с любыми объектами, имеющими отношения, код для сохранения объектов должен находиться между следующими вызовами методов. begintransaction() и commitTransaction(). Только при вызове commitTransaction все значения записываются в базу данных, даже полям, которые не имеют значения, автоматически присваивается ноль вместо нуля в предыдущем случае.

Другие вопросы по тегам