FluentNHibernate自动映射多个

FluentNHibernate自动映射多个,nhibernate,fluent-nhibernate,many-to-many,fluent-nhibernate-mapping,automapping,Nhibernate,Fluent Nhibernate,Many To Many,Fluent Nhibernate Mapping,Automapping,我试图映射一个多对多关系,但映射不起作用(list属性保持为null,并且不存储项) 我使用以下表格: User(Id, Name, Password,...) Role(Id, Name) RoleUser(UserId, RoleId) with a compound primary key 我的实体文件是 public class User { public virtual int Id { get; protected set; } public virtual str

我试图映射一个多对多关系,但映射不起作用(list属性保持为null,并且不存储项)

我使用以下表格:

User(Id, Name, Password,...)
Role(Id, Name)
RoleUser(UserId, RoleId) with a compound primary key
我的实体文件是

public class User
{
    public virtual int Id { get; protected set; }
    public virtual string UserName { get; set; }
    public virtual IList<Role> Roles { get; set; }
}
public class Role
{
    public virtual int Id { get; protected set; }
    public virtual IList<User> Users { get; set; }
    public virtual string Name { get; set; }
}
当我将映射导出到文件时,我在用户定义中得到以下代码段作为示例:

<id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  <column name="Id" />
  <generator class="identity" />
</id>
<bag cascade="all" inverse="true" name="Roles" table="RoleUser">
  <key>
    <column name="UserId" />
    <column name="UserId" />
  </key>
  <many-to-many class="Security.Role, Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"&gt;
    <column name="RoleId" />
  </many-to-many>
</bag>
<property name="UserName" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  <column name="UserName" />
</property>


问题是映射表的架构。我最终使用了一个自定义的ManyToManyTableConvention。

schemaexport是否生成正确的架构?您可以将ddl导出到文件中,而不是数据库。架构导出片段是由方法ExportTo(文件夹)生成的。你是什么意思?你发布了生成的映射,但我希望看到
新的SchemExport(config).Execute(new StreamWriter(“somefile.txt”).WriteLine,false,null,false)
谢谢Firo。这个提示非常有用。问题是映射表的架构。我最终得到了一个自定义的manytomanytable约定。
<id name="Id" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  <column name="Id" />
  <generator class="identity" />
</id>
<bag cascade="all" inverse="true" name="Roles" table="RoleUser">
  <key>
    <column name="UserId" />
    <column name="UserId" />
  </key>
  <many-to-many class="Security.Role, Contracts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"&gt;
    <column name="RoleId" />
  </many-to-many>
</bag>
<property name="UserName" type="System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  <column name="UserName" />
</property>