.net NHibernate-多对多连接回自身

.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]">

我试图创建一个简单的用户对象,它有一个指向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]">
    <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?或者在某个配置文件中有更好的方法来实现这一点吗?当我不使用[]括号时,它会给我一个错误。