8

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

用户 - 用户 ID (int)

UserRoles - UserID (int), Role (string)

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

4

4 回答 4

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).

于 2009-01-11T19:55:58.440 回答
4

FWIW 这在今天发生了微小的变化。当前映射是

HasMany<string>(x => x.Roles)
  .Element("Role");
于 2010-03-29T19:52:46.340 回答
0

我相信它会是

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

您还必须确保映射您的 UserRoles 类

于 2009-01-11T12:21:03.837 回答
0

这也有效:

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

您不需要映射角色或用户角色。

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

于 2009-02-18T15:58:47.787 回答