您的位置:首页 > 其它

NHB中一对一,一对多,多对一的实例

2007-05-03 10:24 85 查看
本文将讲述品目类型、品目、品目标准、品目明细这类常见关系在NHB中的实现。

在这里品目类型和品目是一对多的关系,其中品目类型表的主键作为品目表的外键;品目标准和品目是一对一的关系,品目表的主键作为品目标准表的外键;品目明细和品目是多对一的关系,品目表的主键作为品目明细表的外键。所以我使用了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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: