25

(非常に) 長い間、Fluent NHibernate を使用して1 対 1 のマッピングを正しく実装する方法の例を探していました。

私が見つけたほとんどのリソースは次のように述べています。

私はあなたが多対一を意味していると思います

しかし、1 対 1 の関係を正しく実装する方法について実際に例を挙げている人は誰もいません。

Fluent NHibernate を使用した 1 対 1 のマッピングの例を教えてください

注: 「あなたのモデルは何ですか。実際にはHasManyが必要かもしれません」という人には興味がありません。いいえ、1 対 1 の例が必要です。

より正確には、構文を知っています。自分で検索して出てきたのはこれだけです。私が探しているのは、((非常に) 単純な) データベースのセットアップと、関係に参加するすべてのエンティティのマッピング全体を含む、より完全な例です。これは、スタック オーバーフローに妥当なサイズになると思います。

4

4 に答える 4

19

問題を解決しました。

私はまた、この問題についてやや詳細な記事を書いています。

1 対 1 の関係が必要なシナリオ、希望するデータベース スキーマ、NHibernate の要件を満たすために必要なモデルのコード、および状況に対応するFluentマッピングが見つかります。 .

于 2010-01-20T20:53:21.890 に答える
3
these are the two classes.

public class A
{
  public virtual int Id {get;set;}
  public virtual string P1 {get;set;}
  public virtual string P2 {get;set;}
  public virtual string P3 {get;set;}
  public virtual B child { get; set; }
}

public class B
{
  public virtual int Id {get;set;}
  public virtual string P4 {get;set;}
  public virtual string P5 {get;set;}
  public virtual string P6 {get;set;}
  public virtual A parent;
}     

これは流暢な構成に追加する必要があります。

public AMap()
    {
      /* mapping for id and properties here */
      HasOne(x => x.child)
          .Cascade.All();
    }

    public BMap()
    {
      /* mapping for id and properties here */
      References(x => x.parent)
          .Unique();
    }
于 2014-11-25T06:57:58.113 に答える
2

これは私が見た中で最も良い例です。うまくいけば、それはあなたのニーズを満たしています。

于 2010-01-18T14:59:51.697 に答える
-2

HasOne(x => x.Prop)

于 2010-01-18T09:47:24.483 に答える