我已远远超出了我的民族解放能力,似乎......。
我试图把一个有3个儿童藏书的实体的“顶10”装上,但“NHibernate s Linq”的实施给我带来了正确的结果......其代价是把所有儿童的表格装上。
public class PartnerDto : BaseDto
{
private IList<EmailContactDto> _emailContacts;
private IList<TelephoneNumberDto> _telephoneNumbers;
private IList<string> _chains;
public EmailContactDto[] EmailContacts
{
get { return _emailContacts.ToArray(); }
set { _emailContacts = value.ToList(); }
}
public TelephoneNumberDto[] TelephoneNumbers
{
get { return _telephoneNumbers.ToArray(); }
set { _telephoneNumbers = value.ToList(); }
}
public string[] Chains
{
get { return _chains.ToArray(); }
set { _chains = value.ToList(); }
}
//more properties
}
绘图:
<class name="PartnerDto" table="[Partner]" schema-action="none" lazy="false" mutable="false">
<id name="Id">
<generator class="hilo"/>
</id>
<bag name="Chains" table="PartnerChains" access="field.camelcase-underscore" lazy="false" fetch="subselect">
<key column="PartnerId"/>
<element column="Chain" type="System.String"/>
</bag>
<bag name="TelephoneNumbers" access="field.camelcase-underscore" lazy="false" fetch="subselect">
<key column="PartnerId"/>
<composite-element class="TelephoneNumberDto">
<property name="Name" not-null="true"/>
<property name="ClickToDial" not-null="true"/>
<property name="SMS" not-null="true"/>
<property name="Index" column="[Index]" not-null="true"/>
</composite-element>
</bag>
<bag name="EmailContacts" access="field.camelcase-underscore" lazy="false" fetch="subselect">
<key column="PartnerId"/>
<composite-element class="EmailContactDto">
<property name="Name" not-null="true"/>
<property name="Email" not-null="true"/>
<property name="NewsLetter" not-null="true"/>
<property name="Index" column="[Index]" not-null="true"/>
</composite-element>
</bag>
<!-- other properties -->
当我去做:
session.Query<PartnerDto>().Take(10);
我得到正确的10份回馈,但我的ql显示,它装上电话簿表、电子邮件Contact表和伙伴Chains表格中的所有各行,而不是将其限制在10个伙伴Im装载上。
我失踪了什么? (Yes,我必须非常急切地装载——在盘问之后,必须按顺序排列。)
EDIT:创始解决办法:
我先问一下,只看一页的问答,然后问一下使用这些Id s的全标的图表。 由于“十大”目前位于该条款的范围之内,因此NHibernate也用于过滤。 是的,这并非完美无缺,我有两点四点四点四点四点四点四点四点四点四点四点三点,但我目前仍然最选择。