If you have known about one-to-many relation, it's easy to understand.
TblAccount.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="TrainingCenter.Bussiness.TblAccount, TrainingCenter" table="tblAccount">
<id name="AccountId" column="AccountId" type="Int64" length="8" unsaved-value="0" >
<generator class="identity" />
</id>
<property name="UserName" column="UserName" type="String" />
<property name="PassWord" column="PassWord" type="String" />
<property name="Email" column="Email" type="String" />
<property name="Permission" column="Permission" type="Byte" />
<property name="Status" column="Status" type="Int32" />
<bag name="AccountEquipment" inverse="true" lazy="true" cascade="all" fetch="select">
<key column="AccountId" />
<one-to-many class="TrainingCenter.Bussiness.tblAccount_X_Equipment, TrainingCenter" />
</bag>
</class>
</hibernate-mapping>
TblEquipment.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="TrainingCenter.Bussiness.TblEquipment,TrainingCenter" table="tblEquipment">
<id name="EquipId" column="EquipId" type="Int64" length="8" unsaved-value="0" >
<generator class="identity" />
</id>
<property name="SerialNumber" column="SerialNumber" type="String" />
<property name="DateAdded" column="DateAdded" type="DateTime" />
<property name="Status" column="Status" type="Byte" />
<property name="Notes" column="Notes" type="String" />
<many-to-one name="EquipType" column="TypeId" not-null="true" fetch="select" cascade="save-update" />
<bag name="AccountEquipment" inverse="true" lazy="true" cascade="all" fetch="select">
<key column="EquipId" />
<one-to-many class="TrainingCenter.Bussiness.tblAccount_X_Equipment, TrainingCenter" />
</bag>
</class>
</hibernate-mapping>
TblAccount_X_Equipment.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
<class name="TrainingCenter.Bussiness.TblAccount_X_Equipment, TrainingCenter" table="tblAccount_X_Equipment">
<id name="AccEquiId" column="AccEquiId" type="Int64" length="8" unsaved-value="0" >
<generator class="identity" />
</id>
<property name="StartTime" column="StartTime" type="DateTime" length="8" />
<property name="EndTime" column="EndTime" type="DateTime" length="8" />
<property name="Notes" column="Notes" type="String" length="200" />
<many-to-one name="AccountParent" column="AccountId" not-null="true" fetch="select" cascade="save-update" />
<many-to-one name="EquipmentParent" column="EquipId" not-null="true" fetch="select" cascade="save-update" />
</class>
</hibernate-mapping>
------------------------------
Function to Insert data:
public void Add_Account_Equipment(long accountid,long equipid,DateTime starttime,DateTime endtime,string notes)
{
ITransaction transaction;
try
{
transaction=session.BeginTransaction();
Bussiness.TblAccount account =(Bussiness.TblAccount) session.Get(typeof(Bussiness.TblAccount),accountid);
Bussiness.TblEquipment equipment =(Bussiness.TblEquipment) session.Get(typeof(Bussiness.TblEquipment),equipid);
Bussiness.TblAccount_X_Equipment accequip = new Bussiness.TblAccount_X_Equipment();
accequip.AccountParent =account;
accequip.EquipmentParent=equipment;
accequip.StartTime=starttime;
accequip.EndTime=endtime;
accequip.Notes=notes;
account.AccountEquipment.Add(accequip);
equipment.AccountEquipment.Add(accequip);
session.Save(accequip);
transaction.Commit();
session.Disconnect();
}
catch(Exception ex)
{
throw ex;
}
finally
{
session.Close();
}
}[/u]
|