NHB中一对一,一对多,多对一的实例
2007-05-03 10:24
85 查看
本文将讲述品目类型、品目、品目标准、品目明细这类常见关系在NHB中的实现。
在这里品目类型和品目是一对多的关系,其中品目类型表的主键作为品目表的外键;品目标准和品目是一对一的关系,品目表的主键作为品目标准表的外键;品目明细和品目是多对一的关系,品目表的主键作为品目明细表的外键。所以我使用了one-to-one、one-to-many、many-to-one的关系模型来描述。
--以下是类文件
//品目类型的实体类
//品目的实体类
//品目标准的实体类
//品目明细的实体类
--以下是映射文件:
//品目类型的XML文件
//品目的XML文件
//品目标准的XML文件
//品目明细的XML文件
在这里品目类型和品目是一对多的关系,其中品目类型表的主键作为品目表的外键;品目标准和品目是一对一的关系,品目表的主键作为品目标准表的外键;品目明细和品目是多对一的关系,品目表的主键作为品目明细表的外键。所以我使用了one-to-one、one-to-many、many-to-one的关系模型来描述。
--以下是类文件
//品目类型的实体类
public class M_ItemType { private string _id; private string _typeName; private IList _items; virtual public string Id { get { return _id; } set { _id = value; } } virtual public string TypeName { get { return _typeName; } set { _typeName = value; } } virtual public IList Items { get { if (_items == null) { _items = new ArrayList(); } return _items; } set { _items = value; } } }
//品目的实体类
public class M_Item { private string _id; private string _itemName; private M_ItemType _itemtype; private M_ItemStand _itemstand; private IList _itemDetails; virtual public string Id { get { return _id; } set { _id = value; } } virtual public string ItemName { get { return _itemName; } set { _itemName = value; } } //品目类型表的主键作为品目表的外键 virtual public M_ItemType ItemType { get { return _itemtype; } set { _itemtype = value; } } //主键被产品标准表作为外键,一对一关联 virtual public M_ItemStand ItemStand { get { return _itemstand; } set { _itemstand = value; } } //主键被产品明细表作为外键,一对多关联 virtual public IList ItemDetails { get { return _itemDetails; } set { _itemDetails = value; } } }
//品目标准的实体类
public class M_ItemStand { private string m_ID; private decimal m_DIA_MIN; private M_Item m_item; virtual public string Id { get { return m_ID; } set { m_ID = value; } } virtual public decimal DIA_MIN { get { return m_DIA_MIN; } set { m_DIA_MIN = value; } } //一对一外键关联 virtual public M_Item Item { get { return m_item; } set { m_item = value; } } }
//品目明细的实体类
public class M_ItemDetail { private string m_serialNo; private M_Item m_item; virtual public string SerialNo { get { return m_serialNo; } set { m_serialNo = value; } } public virtual M_Item Item { get { return m_item; } set { m_item = value; } } }
--以下是映射文件:
//品目类型的XML文件
<?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" schema="dbo"> <class name="WareHouse.Entities.M_ItemType,WareHouse.Entities" table="M_Item_Type" > <id name="Id" column="Id" type="System.String"> <generator class="assigned" /> </id> <property name="TypeName" column="Name" type="System.String" /> <bag name="Items" table="M_Item" lazy="false"> <key column="Type"/> <one-to-many class="WareHouse.Entities.M_Item,WareHouse.Entities"/> </bag> </class> </hibernate-mapping>
//品目的XML文件
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" schema="dbo"> <class name="WareHouse.Entities.M_Item,WareHouse.Entities" table="M_Item" > <id name="Id" column="Id" type="System.String"> <generator class="native" /> </id> <property name="ItemName" column="Name" type="System.String" /> <many-to-one name="ItemType" column="Type" class="WareHouse.Entities.M_ItemType,WareHouse.Entities" lazy="false" /> <one-to-one name="ItemStand" class="WareHouse.Entities.M_ItemStand, WareHouse.Entities" property-ref="Item" /> <bag name="ItemDetails" table="M_ItemDetail" lazy="true"> <key column="ItemID"/> <one-to-many class="WareHouse.Entities.M_ItemDetail,WareHouse.Entities"/> </bag> </class> </hibernate-mapping>
//品目标准的XML文件
<?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" schema="dbo"> <class name="WareHouse.Entities.M_ItemStand,WareHouse.Entities" table="M_Item_Stand" > <id name="Id" column="Id" type="System.String"> <generator class="native" /> </id> <property name="DIA_MIN" column="DIA_MIN" type="Decimal" /> <many-to-one name="Item" column="ItemID" class="WareHouse.Entities.M_Item,WareHouse.Entities" unique="true" /> </class> </hibernate-mapping>
//品目明细的XML文件
<?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" schema="dbo"> <class name="WareHouse.Entities.M_ItemDetail,WareHouse.Entities" table="M_ItemDetail" > <id name="MachineNo" column="MachineNo" type="System.String"> <generator class="assigned" /> </id> <property name="SerialNo" column="SerialNo" type="System.String" /> <many-to-one name="Item" column="ItemID" class="WareHouse.Entities.M_Item,WareHouse.Entities" /> </class> </hibernate-mapping>
相关文章推荐
- 数据库一对一,一对多,多对多关系
- MyBatis注解方式与映射文件方式配合实现一对一,一对多,多对多(一)
- Mybatis一对一及一对多级联
- mybatis--高级结果映射之一对一、一对多、多对多
- 单向一对一唯一外键关联实例
- Hibernate_8_Person和IdCard实例_一对一关系:基于外键
- Mybatis一对一,一对多,自关联
- Hibernate中一对一映射详细解析(内含实例)
- hibernate 一对多,一对一小结
- 一对多 一对一 多对一 多对多 数据库设计实践
- Hibernate主键一对一关联映射实例【xml和注解版本@OneToOne@JoinColumn(name="wifeId")--主键单向】(十二)
- 3、Hibernate一对一、一对多、多对多对应关系
- 3、Hibernate一对一、一对多、多对多对应关系
- 3、Hibernate一对一、一对多、多对多对应关系
- Hibernate 关系映射 (一对一,一对多,多对多)
- NHibernate 集合映射基础(第四篇) - 一对一、 一对多、多对多小示例
- mybatis3.2.7学习笔记2_一对一、一对多、多对多、延时加载、缓存
- Hibernate映射关系之一对一 and 一对多 or 多对一
- 一对多、一对一、多对多类图
- Hibernate关联关系配置(一对多、一对一和多对多)