【问题标题】:Fluent nHibernate Mapping issue流畅的 nHibernate 映射问题
【发布时间】:2011-07-07 09:52:56
【问题描述】:

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

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

现在我对流利的 nHibernate 中这些表的映射感到困惑,我按照Fluent nHibernate Wiki site 中的定义进行了映射,但出现此错误:

(XmlDocument)(3,6):XML 验证 错误:元素 'composite-id' 在 命名空间 'urn:nhibernate-mapping-2.2' 内容不完整。列表 预期的可能元素:'元, key-property, key-many-to-one' in 命名空间 'urn:nhibernate-mapping-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");
    }
}

角色映射:

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");
    }
}

有人知道是什么问题吗?

谢谢

【问题讨论】:

标签: nhibernate orm fluent-nhibernate nhibernate-mapping


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 2023-03-14
    • 2010-11-22
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    相关资源
    最近更新 更多