.net NHibernate-多对多连接回自身
我试图创建一个简单的用户对象,它有一个指向IList的Friends属性 一开始只是想让ISet工作.net NHibernate-多对多连接回自身,.net,nhibernate,.net,Nhibernate,我试图创建一个简单的用户对象,它有一个指向IList的Friends属性 一开始只是想让ISet工作 <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false" assembly="MyProject.Domain" namespace="MyProject.Domain"> <class name="User" table="[User]">
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false"
assembly="MyProject.Domain" namespace="MyProject.Domain">
<class name="User" table="[User]">
<id name="Id" column="UserId">
<generator class="increment" />
</id>
<property name="UserName" column="UserName" />
<property name="Location" />
<set name="Friends" table="Friend" lazy="false">
<key column="UserId" />
<many-to-many class="User" column="FriendId" />
</set>
</class>
</hibernate-mapping>
这似乎工作正常。但是,我如何将其转换为IList,并根据建立关系的日期(按时间倒序)对朋友进行排序
我可以在朋友表中添加“排序依据”字段吗
这是我目前的班级-
public class User
{
public virtual int Id { get; set; }
public virtual string UserName { get; set; }
public virtual string Location { get; set; }
public virtual ISet<User> Friends { get; set; }
}
公共类用户
{
公共虚拟整数Id{get;set;}
公共虚拟字符串用户名{get;set;}
公共虚拟字符串位置{get;set;}
公共虚拟ISet好友{get;set;}
}
您可以使用Bag映射来提供ILST,而不是set映射。您还可以按照NHibernate文档中的指定,将order by元素添加到行李映射中
<map
name="propertyName" (1)
table="table_name" (2)
schema="schema_name" (3)
lazy="true|false" (4)
inverse="true|false" (5)
cascade="all|none|save-update|delete|all-delete-orphan" (6)
sort="unsorted|natural|comparatorClass" (7)
order-by="column_name asc|desc" (8)
where="arbitrary sql where condition" (9)
fetch="select|join" (10)
batch-size="N" (11)
access="field|property|ClassName" (12)
>
<key .... />
<index .... />
<element .... />
</map>
+1谢谢。我今天将尝试并更新为answer/comments.Lomaxx,我是否正确转义了表名User?或者在某个配置文件中有更好的方法来实现这一点吗?当我不使用[]括号时,它会给我一个错误。