2012-03-29 10 views
-1

私はテーブルアドレスとアカウントのための多くのテーブルを持っています。 書くにはこのような状況では、1対1のリレーションシップマッピングが必要ですか?流暢なNHibernateの一対一の関係

+----------+ 
| Address | 
+----------+ 
| Id  | PK 
+----------+ 

+----------+ 
| AccountA | 
+---------+ 
| Id  | PK 
| AddressId| FK 
+----------+ 

+----------+ 
| AccountB | 
+---------+ 
| Id  | PK 
| AddressId| FK 
+----------+ 

答えて

1

これは自動マッピング用です。同上

+----------+ 
| Address | 
+----------+ 
| Id  | PK 
+----------+ 

+----------+ 
| AccountA | 
+---------+ 
| Id  | PK 
+----------+ 

+----------+ 
| AccountB | 
+---------+ 
| Id  | PK 
+----------+ 

.Override<Address>(mapping => mapping.HasOne(address => caddress.AddressA).Cascade.All().LazyLoad()) 
.Override<Address>(mapping => mapping.HasOne(address => caddress.AddressB).Cascade.All().LazyLoad()) 
.Override<AddressA>(mapping => mapping.Id(x => x.Id).GeneratedBy.Foreign("Address")) 
.Override<AddressB>(mapping => mapping.Id(x => x.Id).GeneratedBy.Foreign("Address")) 
.Override<AddressA>(
    mapping => mapping.HasOne(
    Reveal.Member<AddressA, Address>("Address")).Constrained().ForeignKey().LazyLoad()) 
.Override<AddressB>(
    mapping => mapping.HasOne(
    Reveal.Member<AddressB, Address>("Address")).Constrained().ForeignKey().LazyLoad()) 

すべてこのテーブルは、同じキーを持っています