2011-01-23 208 views
0

我在Person類和Employee之間有一對一的關係。我期望INSERT從人員級聯到員工級聯。但是,這不會發生。我已經在一對一的關係元素上嘗試了cascade ='all'和cascade ='save-update',但它不起作用。我還上傳到我的整個源代碼:http://bit.ly/gnkxBr(3.52 MB)NHibernate - 一對一映射

的我的對象的結構是如下所示:下面所示

public class Person 
{ 
    public virtual Employee Employee { get; set; } 
    public virtual int Age { get; set; } 
    public virtual string Forename { get; set; } 
    public virtual string Surname { get; set; } 
    public virtual int PersonID { get; set; } 
} 

public class Employee 
{ 
    public virtual int PersonID { get; set; } 
    public virtual string PayRollNo { get; set; } 
    public virtual int Holidays { get; set; } 
    public virtual Person Person { get; set; } 
} 

映射文件:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="Person, Employee.DAL" table="`Person`" > 
    <id name="PersonID" column="`PersonId`" type="int"> 
     <generator class="native" /> 
    </id> 
    <property type="string" name="Forename" column="`Forename`" /> 
    <property type="string" name="Surname" column="`Surname`" /> 
    <property type="int" name="Age" column="`Age`" /> 
    <one-to-one name="Employee" class="Employee" cascade="all" /> 
    </class> 
</hibernate-mapping> 


<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="Employee, Employee.DAL" table="`Employee`" > 
    <id name="PersonID" column="`PersonId`"> 
     <generator class="foreign"> 
     <param name="property" >Person</param> 
     </generator> 
    </id> 
    <property type="string" length="30" name="PayRollNo" column="`PayRollNo`" /> 
    <property type="int" name="Holidays" column="`Holidays`" /> 
    <one-to-one name="Person" class="Person" constrained="true" /> 
    </class> 
</hibernate-mapping> 

回答

0

把事務中的session.Save()方法。或者在調用save方法後使用session.Flush()方法。