我有两个表,即Dept和Emp。他们的Hbm文件是:
<id name="DeptId">
<column name="DeptId" />
<generator class="increment" />
</id>
<property name="DeptName" column="DeptName" length="50" />
<bag name="Emp5" inverse="true" cascade="save-update">
<key>
<column name="RefDeptId" />
</key>
<one-to-many class="EmpModel" />
</bag>
</class>
<id name="EmpId">
<column name="EmpId" />
<generator class="increment" />
</id>
<property name="EmpName" column="EmpName" length="50" />
<property name="RefDeptId" column="RefDeptId"/>
<many-to-one name="objEmpDeptId1" class="DeptModel" cascade="save-update" column="RefDeptId" />
</class>
在代码方面,我正在填充这样的对象:
DeptModel dept = new DeptModel();
dept.DeptName = "sap";
dept.DeptId = 5;
List<EmpModel> lst = new List<EmpModel>();
EmpModel emp1 = new EmpModel();
emp1.EmpName = "Rajesh";
EmpModel emp2 = new EmpModel();
emp2.EmpName = "shyam";
lst.Add(emp1);
lst.Add(emp2);
dept.Emp5 = lst;
session.Save(a_dept );
当我尝试在Nhibernate中保存此对象时,它无法按预期工作。 我希望它首先在dept中存储值,然后在emp中添加两行,并生成dept的自动增量值。可能吗 ? 当我检查sql server的探查器时,它生成的查询使用RefDeptid为0而不是自动增量值为dept且仅为1名员工。 可能吗 ? 我怎么能做到这一点?