Беглый 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 все значения записываются в базу данных, даже полям, которые не имеют значения, автоматически присваивается ноль вместо нуля в предыдущем случае.