当前位置: 首页 > 工具软件 > Composite > 使用案例 >

NHibernate之 composite-element

燕禄
2023-12-01
composite-element,组合元素,在实际应用中有很重要的作用, 组合元素可以在很多 collections 中实现, 如 bag, set, list...,下面的示例使用的是 集合(set)
<class name="eg.Person" ...>
...
<set name="someNames" table="some_names" lazy="true">
    <key column="id"/>
    <composite-element class="eg.Name">
        <parent name="Person" />
        <property name="initial"/>
        <property name="property1"/>
        <property name="property2"/>
        <many-to-one class="eg.Address" />
    </composite-element>
</set>
...
</class>

实现 set 的元素是组合元素时, 必须正确实现 eg.Name 的 Equals() 和 HashCode(),如上例的 eg.Names的实现:
        public override bool Equals(object obj)
        {
            if (obj != null)
            {
                property1 sap = (property1 )obj;
                return (sap.property1.Equals(this.property1 ) && sap.property2.Equals(this.property2 ));
            }
            return false;
        }

        public override int GetHashCode()
        {
            return this. property1.GetHashCode() ^ this. property2.GetHashCode();
        }
其中 property1 property2 是确定元素的一个组合(本例未使用composit-id实现),可以唯一确定表 some_names 的一条记录.
 类似资料: