2012-03-10 5 views
0

Я загружаю Contact-objekt из базы данных. Объект Контакт имеет отображение один-ко-многим в ContactSecurity:Объединить существующий объект, который ссылается на новый

<set name="ContactSecuritys" lazy="true" inverse="true" cascade="none" > 
     <key> 
      <column name="ContactId"/> 
     </key> 
     <one-to-many class="ContactSecurity"/> 
    </set> 

Теперь я пытаюсь сделать:

contact.ContactSecuritys.Add(new ContactSecurity(Guid.NewGuid())); 
Session.Merge(contact); 

Но это бросает то объект TransientObjectExcpeption»является неспасенный переходный случай - сохранить переходная экземпляр до слияния: Prayon.Entities.ContactSecurity»

Я также попытался

contact.ContactSecuritys.Add(new ContactSecurity(Guid.NewGuid()) {Contact = contact}); 
Session.Merge(contact); 

Что я делаю неправильно? - Должен ли я дополнительно сохранять новый ContactSecurity-Object с указанным контактом до слияния контакта? - Или есть более простой способ сделать это?

Спасибо за любую помощь.

ответ

1

Я думаю, это потому, что «ContactSecurity» - это новый переходный объект. Если объект с тем же идентификатором уже сохранен, вы можете использовать «session.Merge()», но нет какого-либо объекта с таким идентификатором. Вы можете использовать «session.Persist (ContactSecurity)» для присоединения переходного объекта к сеансу.

var contactSecurity = new ContactSecurity(Guid.NewGuid()); 
Session.Persist(contactSecurity); 

contact.ContactSecuritys.Add(contactSecurity); 
Session.Merge(contact); 

В общем, я не понимаю, почему вы используете «session.Merge()». Если объект «контакт» является постоянным объектом вы можете использовать «session.Flush()» в конце сделки, и не называют «session.Merge()»:

+0

С session.Persist() У меня возникла проблема, что в contactSecurity отсутствуют свойства null. Это будет установлено в Save-Event. – BennoDual

2

Ваша проблема не вызванных ContactSecurity. По крайней мере, вы должны изменить свои настройки каскада на - cascade="save-update", чтобы позволить основному классу обновлять и вставлять другие объекты в свои свойства.

Смежные вопросы