首页 文章

流畅的nHibernate映射问题

提问于
浏览
0

我有一个包含下表的数据库

  • 用户

  • 角色

  • UserInRoles(用户和角色的桥表,用于多对多关系

  • 模块

  • ModulePermission(这包括角色和模块的PK以及用于标识角色是否有权访问模块的bool字段

现在我在流畅的nHibernate中混淆了这些表的映射,我在Fluent nHibernate Wiki site中定义了映射,但是得到了这个错误:

(XmlDocument)(3,6):XML验证错误:命名空间'urn:nhibernate-mapping-2.2'中的元素'composite-id'具有不完整的内容 . 期望的可能元素列表:命名空间'urn:nhibernate-mapping-2.2'中的'meta,key-property,key-many-to-one' .

映射:UserMap:

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 回答

  • 3

    当我定义父键和子键列时,HasManyToMany映射配置对我有用 . 你可以这样做:

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

相关问题