NHibernate-在相关表中创建记录

NHibernate-在相关表中创建记录,nhibernate,Nhibernate,Hibernate版本:2.0.1GA 我试图在两个表中添加一条记录。这些表格是相关的。我对NHiberate有一个初学者的知识,所以我希望有更好的方法来做到这一点 目前,我相信获得新添加记录ID的唯一方法是执行SaveOrUpdate;然后设置对象的ID字段(因为我在SQLServer2005Express中使用autoincrement) 为了在相关表中添加记录,我必须设置其父项的ID字段。以下是我现在正在做的: transaction = session.BeginTransaction(

Hibernate版本:2.0.1GA

我试图在两个表中添加一条记录。这些表格是相关的。我对NHiberate有一个初学者的知识,所以我希望有更好的方法来做到这一点

目前,我相信获得新添加记录ID的唯一方法是执行SaveOrUpdate;然后设置对象的ID字段(因为我在SQLServer2005Express中使用autoincrement)

为了在相关表中添加记录,我必须设置其父项的ID字段。以下是我现在正在做的:

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(); 
请注意,地址与联系人相关。每多个地址1个联系人

为了添加地址记录,我必须拥有相应的联系人ID,我相信只有在创建联系人记录后才能获得该ID,因此我使用了“SaveOrUpdate”两次

更好的出路


谢谢

有一个简单得多的方法

首先,将Address对象添加到Contact对象中

public class Contact
{
   public Contact(){}
   private IList<Address> _addresses;
   public IList<Address> Addresses
   {
          get
          {
                 if(_addresses == null) _addresses = new List<Address>(); 
                 return _addresses 
          }
          set
          {
                 _addresses = value;
          }
   }
现在,当您在Contact中填充Address对象并保存Contact对象时,Address对象集合将自动保持


如果需要,我可以提供更完整的示例。

请正确设置代码示例的格式。如果在行的开始处放置四个空格,则其格式为代码块
<bag name="Addresses" cascade="all-delete-orphan" lazy="false">
  <key column="Address_FK" />
  <one-to-many class="DomainModel.Address, DomainModel" />
</bag>
  default-cascade="save-update"