Fluent NHibernate を使用すると、次のように User クラスに対して 1 対多の関係をマップできます。
HasMany(x => x.Membership)
.KeyColumn("UserID")
.Where("Deleted = 0");
これは、削除されていないメンバーシップ レコードのみを取得するため、期待どおりに機能します。いいえ、これがユーザーごとに 1 つのレコードを返すことがわかっているメンバーシップに対して、Latest というフィールドがあるとは言いません。
HasOne(x => x.CurrentMembership)
.Where("Current = 1");
ただし、Where メソッドはありません。私は次のように言ってコードでこれを行うことができることを知っています:
public virtual Membership CurrentMembership
{ get { return Membership.Single(m => m.Current); } }
しかし、これでは、このプロパティに対して LINQ クエリを実行できません。以前はこれを制限として受け入れていましたが、パフォーマンスの面で本当に苦しめられ始めています。
誰かが助けてくれたら本当にありがたいです。