我有一个名为UserPermissions的表,用userId将一个FK表映射到用户表,然后是一个字符串列,用于枚举的字符串值。映射一个枚举的列表
我看到的错误NHibernate.MappingException:从表中UserPermissions的关联是指未映射类:GotRoleplay.Core.Domain.Model.Permission
我的许可枚举:
public enum Permission
{
[StringValue("Add User")]
AddUser,
[StringValue("Edit User")]
EditUser,
[StringValue("Delete User")]
DeleteUser,
[StringValue("Add Content")]
AddContent,
[StringValue("Edit Content")]
EditContent,
[StringValue("Delete Content")]
DeleteContent,
}
在我的User类的属性:
public virtual IList<Permission> Permissions { get; set; }
我的数据库表:
CREATE TABLE dbo.UserPermissions
(
UserPermissionId int IDENTITY(1,1) NOT NULL,
UserId int NOT NULL,
PermissionName varchar (50) NOT NULL,
CONSTRAINT PK_UserPermissions PRIMARY KEY CLUSTERED (UserPermissionId),
CONSTRAINT FK_UserPermissions_Users FOREIGN KEY (UserId) REFERENCES Users(UserId),
CONSTRAINT U_User_Permission UNIQUE(UserId, PermissionName)
)
我试图在我的映射用户对象的权限属性:
HasManyToMany(x => x.Permissions)
.WithParentKeyColumn("UserId")
.WithChildKeyColumn("PermissionName")
.WithTableName("UserPermissions")
.LazyLoad();
什么我做错了,它不能映射权限枚举值列表?
所以很多修修补补之后,我最后不得不创建一个名为UserPermission新对象,并将其映射到具有Permission属性的UserPermissions表使用我的枚举作为数据类型。这工作正常,但权限可以附加到角色和用户,这意味着我的选择查询获得分配给用户的所有权限(包括他们的所有角色)需要一组复杂的linq语句。我宁愿不这样做。有人有主意吗? – Josh 2009-05-27 01:02:26