私は、データベース内の2つのテーブルを持っていますチームと連携することができますが、そうする必要はありません。チームはウェブサイトにアライメントすることはできますが、そうする必要はありません。したがって、両者の関係はどちらか一方でもどちらでもありません。アプリケーションレベルの追加の強制コードや1:多くのマッピングを必要とせずに、流暢なnhibernateを使ってこの1:1の関係をどのようにマッピングできますか?</p> <ul> <li><strong>チーム表</strong>(ID、名前、WebsiteId(NULL可能))</li> <li><strong>ウェブサイトの表</strong>(ID、名前)</li> </ul> <p>ウェブサイト:
もともと、私はこれを行うの見ることができる唯一の方法はこれを行うことによって、多くのマッピングを作成することです:
WebsiteMapクラス
HasMany(x => x.Teams).AsBag().Inverse().Fetch.Select().BatchSize(50);
TeamMapクラス
References(x => x.WebSite).Nullable();
が、 1:1マッピングを強制するのを訂正するために、私はこのコードを持っている私のウェブサイトのクラスでこれをしなければならない:
public virtual Team Team
{
get
{
return Teams.FirstOrDefault();
}
}
この変換を行う必要がないように、マッピングレイヤ自体でこの関係を正しく記述するにはどうすればよいですか?
ここで重要なことは、これらのテーブルの1つがもう一方のスレーブではないことです。私が流暢なnhibernateと約1:1のマッピングでインターネット上で見るすべての例は、最初の(UserテーブルとUserPreferencesテーブルのような)なしで2番目のテーブルが存在しないと仮定しますが、それは私の状況ではありません。
上記の私の例では、両側のnullableはマスターでもスレーブでもないので、
これを流暢なnhibernateにマップする正しい方法は何ですか?
は関係NULL可能列を持つ両側にこれだけではなく、1対1のマッピングですか? – starlight54
はい、私はその質問にどのように答えているのかわかりません – leora
ここではFluentを使ってOne-to-Oneを行う方法についての回答があります。両端に 'Nullable()'を追加するだけでシナリオ。 http://stackoverflow.com/questions/6085568/how-to-do-a-fluent-nhibernate-one-to-one-mapping#answers – starlight54