Hibernate версия: 2.0.1GA
Я пытаюсь добавить одну запись в две таблицы. Таблицы связаны между собой. Я знаю новичка в NHiberate, поэтому я надеюсь, что есть лучший способ сделать это.
В настоящее время я убежден, что единственный способ получить идентификатор вновь добавленной записи - это выполнить SaveOrUpdate; тогда поле идентификатора объекта устанавливается (так как я использую автоинкремент с SQL Server 2005 Express).
Чтобы добавить запись в связанную таблицу, я должен установить поле идентификатора его родителя. Вот что я делаю сейчас:
transaction = session.BeginTransaction();
Contact myContact = new Contact();
myContact.Company = "ABC Company";
myContact.Notes = "test";
session.SaveOrUpdate(myContact);
Address myAddress = new Address();
myAddress.IdContact = myContact.Id;
myAddress.City = "Any City";
myAddress.State = "XX";
myAddress.Zip = "12345";
session.SaveOrUpdate(myContact);
// Commit transaction
transaction.Commit();
Обратите внимание, что АДРЕС связан с CONTACT. 1 КОНТАКТ на МНОГИЕ АДРЕСА.
Чтобы добавить запись ADDRESS, у меня должен быть соответствующий CONTACT ID, и я считаю, что могу получить только то ПОСЛЕ того, как я создаю запись CONTACT, следовательно, я использовал «SaveOrUpdate» дважды.
Лучший выход?
Спасибо!