cod*_*zen 5 nhibernate hibernate nhibernate-mapping
我有一个复合组件,它具有多对一参考.
class MyComposite
{
SomeEntity ManyToOne { get; set; }
SomeOtherUserType Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
为了便于映射,我制作了一个ICompositeUserType包含此组件的自定义:
class MyCompositeUserType : ICompositeUserType
{
// ...
private static readonly IType[] _propertyTypes = new[]
{
new ManyToOneType("SomeEntity"),
new CustomType(typeof(SomeOtherUserType))
};
// ...
}
Run Code Online (Sandbox Code Playgroud)
现在,我有一个composite-element包含此组件的s 集合:
<class name="Container">
...
<set name="Pairings"
cascade="all-delete-orphan"
generic="true"
lazy="false"
table="Pairings"
fetch="join">
<key column="ContainerId" />
<composite-element class="Pair">
<property name="Item1" type="mycomposite" lazy="false">
<column name="Entity1Id" />
<column name="Amount1" />
</property>
<property name="Item2" type="mycomposite" lazy="false">
<column name="Entity2Id" />
<column name="Amount2" />
</property>
<property name="Tag" column="Tag" />
</composite-element>
</set>
</class>
Run Code Online (Sandbox Code Playgroud)
当我在Container类上查询时Pairings,按照设计急切地加载该集合,然而,然后,我在其上获得N + 1选择SomeEntity,形成该部分的一部分MyCompositeUserType.我想在Pairings集合上加载这些实体和连接.
如何指定?
如果映射为组件,您可以使用lazy =“ false”将其映射为多对一,或者应该可以在查询时设置fetchmode
<composite-element class="Pair">
<component name="Item1">
<many-to-one name="Entity1" column="Entity1Id" />
<property name="Amount" column="Amount1" />
</component>
<component name="Item2">
<many-to-one name="Entity2" column="Entity2Id"/>
<property name="Amount" column="Amount2" />
</component>
<property name="Tag" column="Tag" />
</composite-element>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
286 次 |
| 最近记录: |