流利的NHibernate问题

时间:2009-01-11 12:12:45

标签: nhibernate fluent-nhibernate nhibernate-mapping

假设你有两个表,“Users”和“UserRoles”。以下是两个表的结构(表 - 列):

用户 - UserID(int)

UserRoles - UserID(int),Role(string)

我想要的是我的域中的“用户”类具有IList角色。如何构建我的Fluent NHibernate映射来实现这一目标?

4 个答案:

答案 0 :(得分:13)

您正在寻找的是一组元素,在标准的hbm映射中是:

<set name="Roles" table="UserRoles">
  <key column="UserID" />
  <element column="Role" />
</set>

对于Fluent NHibernate,您可以这样映射:

HasMany<string>(x => x.Roles)
  .AsElement("Role");

您可能还需要使用WithKeyColumn(string)指定密钥名称。

答案 1 :(得分:4)

FWIW现在这个变化很小。当前的映射是

HasMany<string>(x => x.Roles)
  .Element("Role");

答案 2 :(得分:0)

我相信会是

public User()
  {
    Id(x => x.UserID);
    HasMany<UserRoles>(x => x.UserRoles).AsBag();
  }

您还必须确保映射您的用户角色类

答案 3 :(得分:0)

这也有效:

HasMany<Role>(u => u.Roles)
                .WithTableName("UserRoles")
                .Component(role => role.Map(r => r.Name))
                .AsList();

您无需映射Role或UserRoles。

确保角色实施IEquatable < Role > ;.