我有一個名爲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