-1

個人と住所(個人IDを使用)の間でモデル化された1対1の関係を持つデータベースがあります。しかし、NHibernateを使用してマップを作成する方法が見つかりません。

私のテーブル構造は次のとおりです。

PersonTable

PersonId
PersonName
人物

AddressTable

PersonId
国名
道の名前
StateName

そして、私は最後のクラスとしてこのようなものが欲しいです:

PersonClass

int Id
文字列名
int Age
住所HomeAddress

AddressClass

ストリングストリート
文字列国
文字列の状態
人の所有者

HasOne関係で試しましたが、PersonIdをアドレス識別子として再利用できませんでした。

ありがとう!

編集: FluentNHibernateを使用しているので、流暢なマッピングとXMLの両方で問題がないことを忘れました。

4

3 に答える 3

0

問題は、データベーススキーマがPersonとAddressの間の「HasOne」関係を表していないことです。これは「多くの」関係を表しています。人為的に1人あたり1つのアドレスに制限している場合もありますが、モデルが1人あたり複数のアドレスであるという事実は変わりません。

「HasOne」関係を取得するには、PersonTableにAddressIDを配置します。

于 2010-02-25T13:07:08.620 に答える
0

アドレスクラスマップでId()。GeneratedBy.Foreign()を使用して、個人のIDを参照して実行しましたが、機能しました。

ありがとう!

于 2010-02-25T14:12:23.537 に答える
0

Personのコンポーネントとしてマップします。人物ClassMapに、以下を追加します。

 Component(x => x.Address, m =>
        {
            m.Map(x => x.Street, "Street");
            m.Map(x => x.State, "State");
            // more here
        });

乾杯

于 2010-02-25T14:12:35.250 に答える