在我的项目中,我使用NHibernate作为持久性框架,并且通过数据库,我有一个名为User的表和一个名为recipe的子项(所有这些都在一个单独的hbm.xml文件中正确映射)。 这是" User":
的xml <?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="MyProject.Engine.Domain.User,MyProject.Engine" table="Users" lazy="true">
<id name="UserID" column="UserID">
<generator class="native" />
</id>
<property name="Firstname" column="Firstname" type="string" not-null="true" length="255" />
<property name="Lastname" column="Lastname" type="string" not-null="true" length="255" />
<property name="Email" column="Email" type="string" not-null="true" length="255" />
<property name="Phone" column="Phone" type="string" not-null="true" length="30" />
<property name="Birthday" column="Birthday" type="date" not-null="true"/>
<property name="Address" column="Address" type="string" not-null="true" length="255" />
<property name="City" column="City" type="string" not-null="true" length="50" />
<property name="Zipcode" column="Zipcode" type="int" not-null="true" length="32" />
<property name="Province" column="Province" type="string" not-null="true" length="30" />
<one-to-one name="Receipt" cascade="all" property-ref="UserID" class="MyProject.Engine.Domain.Receipt,MyProject.Engine" />
</class>
</hibernate-mapping>
Receipt对象有一个名为Amount的属性,我将使用该属性按记录顺序。就像现在一样,我只能通过使用&#34; User&#34;来记录。实体(es:电子邮件,电话)。 如果我尝试使用链接实体的属性,我得到一个错误。我怎么能参考呢?
这是我获取和订购记录的方法:
public PagedList<User> GetAll(int pageIndex, int pageSize, string orderBy, string orderByAscOrDesc)
{
using (ISession session = NHibernateHelper.OpenSession())
{
var users = session.CreateCriteria(typeof (User));
if (!string.IsNullOrEmpty(orderBy))
users.AddOrder(orderByAscOrDesc.ToLower() == "asc" ? Order.Asc(orderBy) : Order.Desc(orderBy));
return users.PagedList<User>(session, pageIndex, pageSize);
}
}
答案 0 :(得分:2)
这是不可能的。你需要做客户端。 请参阅相关答案: NHibernate: how to sort a collection by a property of a referenced entity