流畅的 nHibernate 映射问题
Posted
技术标签:
【中文标题】流畅的 nHibernate 映射问题【英文标题】:Fluent nHibernate Mapping issue 【发布时间】: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");
有人知道是什么问题吗?
谢谢
【问题讨论】:
已添加角色 n 用户的映射。 我建议您将hbm.xml文件写入文件夹以发现映射问题!看这里:Using Fluent NHibernate To Export / Create .hbm Files (NHibernate Mapping Files) 【参考方案1】:当我定义父键列和子键列时,HasManyToMany 映射配置对我有用。你可以这样做:
HasManyToMany(user => user.RolesOfUser)
.Table("UserInRoles")
.ParentKeyColumn("UserID")
.ChildKeyColumn("RoleID");
【讨论】:
以上是关于流畅的 nHibernate 映射问题的主要内容,如果未能解决你的问题,请参考以下文章
流畅的 NHibernate HASMANY 映射,无需参考