流畅的nHibernate映射问题

时间:2011-07-07 09:52:56

标签: nhibernate orm fluent-nhibernate nhibernate-mapping

我有一张包含以下表格的数据库

  • 用户
  • 角色
  • UserInRoles(用户的桥接表和多对多关系的角色
  • 模块
  • ModulePermission(包括角色和模块的PK以及用于标识角色是否有权访问模块的bool字段

现在我在流畅的nHibernate中对这些表的映射感到困惑,我在Fluent nHibernate Wiki site中定义了映射,但是出现了这个错误:

  

(XmlDocument)(3,6):XML验证   错误:元素'composite-id'   namespace'瓮:nhibernate-mapping-2.2'   内容不完整。清单   可能的元素:'meta,   key-property,key-many-to-one'in   命名空间   '瓮:NHibernate的映射-2.2'

映射: 用户映射:

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Table("tblUsers");
        LazyLoad();
        Id(user => user.UserID).GeneratedBy.GuidComb();
        Map(user => user.UserName).Not.Nullable();
        Map(user => user.Password).Not.Nullable();
        Map(user => user.IsActive).Nullable();
        HasManyToMany(user => user.RolesOfUser).Cascade.All().Inverse().Table("UserInRoles");
    }
}

RoleMap:

public class RoleMap : ClassMap<Role>
{
    public RoleMap()
    {
        Table("tblRoles");
        Id(role => role.RoleID).GeneratedBy.Identity();
        Map(role => role.RoleName).Not.Nullable();
        Map(role => role.IsActive).Not.Nullable();
        Map(role => role.Description).Not.Nullable();
        HasManyToMany(role => role.Users).Cascade.All().Table("UserInRoles");
    }
}

有谁知道这是什么问题?

由于

1 个答案:

答案 0 :(得分:3)

当我定义父键和子键列时,

HasManyToMany映射配置对我有用。你可以这样做:

HasManyToMany(user => user.RolesOfUser)
    .Table("UserInRoles")
    .ParentKeyColumn("UserID")
    .ChildKeyColumn("RoleID");