userIdによってUserテーブルへのFK、そしてenumの文字列値に対する文字列を持つUserPermissionsというテーブルがあります。Enumのリストのマッピング
私は見ていますエラーが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();
を、私はそれが列挙型の値のリストへのアクセス権をマッピングすることができないことを間違って何をしているのですか?
のためにここを見てデータ型として列挙型を使用するPermissionプロパティを持つUserPermissionsテーブル。これはうまくいきますが、パーミッションをロールとユーザに付けることができます。つまり、すべてのロールを含むユーザに割り当てられたすべてのパーミッションを取得する選択クエリは、複雑なlinq文のセットを必要とします。私はむしろそれをしないだろう。誰にでもアイデアはありますか? – Josh