次のデータベース テーブルが定義されています。
クラブ: ID、名前
メンバー: ID、名前
ClubMember: ClubId、MemberId
次のエンティティ クラスが定義されています。
public class Club() {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Member> Members { get; set; }
}
public class Member() {
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual IList<Club> Clubs { get; set; }
}
次のオーバーライドが定義されています。
public class MemberOverride : IAutoMappingOverride<Member>
{
public void Override(AutoMapping<Member> mapping_)
{
mapping_
.HasManyToMany(x_ => x_.Clubs)
.ParentKeyColumn("MemberId")
.ChildKeyColumn("ClubId")
.Cascade.All()
.Table("ClubMembers");
}
}
public class ClubOverride : IAutoMappingOverride<Club>
{
public void Override(AutoMapping<Club> mapping_)
{
mapping_
.HasManyToMany(x_ => x_.Members)
.ParentKeyColumn("ClubId")
.ChildKeyColumn("MemberId")
.Inverse()
.Table("ClubMembers");
}
}
私のオーバーライドから、ClubOverride の Inverse は次のことができないことを意味することがわかります
session.Save(club.Members.Add(member));
しかし、これは機能します:
session.Save(member.Clubs.Add(club);
しかし、それは論理的な意味を持ちません。クラブのあるメンバーまたはメンバーのあるクラブのいずれかを保存できるようにしたいです。
FluentNhibernate で不可能なことをしようとしていますか?
ティア