人を表すエンティティクラスと、人が持つ権限を表す列挙型があります。コードによるnhibernateマッピングを使用して、この関係をデータベースにマッピングしようとしていますが、成功しませんでした。
コードは次のようになります。
public enum Permissions
{
None = 1,
CanUpdate = 2,
CanInsert = 3,
CanDelete = 4
}
public class Person
{
private ICollection<Permissions> permissions;
public Person()
{
this.permissions = new Collection<Permissions>();
}
public virtual ICollection<Permissions> Permissions
{
get
{
return this.permissions;
}
}
}
public class PersonMap : ClassMapping<Person>
{
public PersonMap()
{
this.Set(
x => x.Permissions,
m =>
{
m.Access(Accessor.Field);
m.Key(k => k.Column("PersonId"));
m.Table("PersonHasPermission");
},
map => map.Element(
p =>
{
p.Column("PermissionId");
p.Type<NHibernate.Type.EnumType<Permissions>>();
}));
}
}
データベーステーブルは次のようになります。
Person
-----------------------
PersonId (PK, uniqueidentifier, not null)
Name (nvarchar(max), not null)
PersonHasPermission
-----------------------
PersonId (PK, FK, uniqueidentifier, not null)
PermissionId (PK, FK, int, not null)
したがって、この構成では例外は発生しませんが、個人のアクセス許可を取得しようとすると、データベースにデータがある場合でも、コレクションは常に空になります。
上記のコードが私が達成しようとしていることを説明していることを願っていますが、さらに明確にする必要があるかどうかを知らせてください。
これに関する助けをいただければ幸いです。前もって感謝します。