2009-10-01 11 views
13

Mam jednostkę "użytkownika", która zawiera obiekt wartości "Adres". Mam to odwzorowanie w porządku przy użyciu koncepcji komponentu FNH. Jednak VO adresu zawiera również Kraj, który jest innym obiektem wartości. Przyjąłem, że powinno to być po prostu zagnieżdżone jako inny komponent, ale to nie działa. Czy ktoś może mi powiedzieć, jak mam to rozwiązać?Mapowanie zagnieżdżonych komponentów w Fluent NHibernate

Kod do mapowania znajduje się poniżej ...

Dzięki!

public UserMapping() 
     { 
      Table("Users"); 
      Id(c => c.Id).GeneratedBy.HiLo("100"); 
      Map(c => c.UserName).Not.Nullable().Length(64); 
      Map(c => c.Email).Not.Nullable().Length(128); 
      Map(c => c.Password).Not.Nullable().Length(256); 
      Map(c => c.Roles).Length(64); 
      Map(c => c.FirstName).Not.Nullable().Length(64); 
      Map(c => c.LastName).Not.Nullable().Length(64); 
      Map(c => c.BirthDate).Not.Nullable(); 
      //Address 
      Component(x => x.Address, m => 
      { 
       m.Map(x => x.AddressLine1).Not.Nullable(); 
       m.Map(x => x.AddressLine2); 
       m.Map(x => x.City).Not.Nullable(); 
       m.Map(x => x.Region); 
       m.Map(x => x.PostalCode).Not.Nullable(); 
       //*****Country Here******** 
       // country has Name and Code 

      }); 
     } 

Odpowiedz

13

Ah, Jimmy Bogard z listy mailingowej FNH pokazał mi - to całkiem proste. Nie wiem, co robiłem wcześniej! W każdym razie, dla każdego, kto jest zainteresowany:

Component(c => c.Address, m => 
{ 
    m.Component(cp => cp.Country, m2 => 
    { 
     m2.Map(x => x.Name); //etc 
    } 
+1

Niesamowite. Nie zdawałem sobie sprawy, że można tak je zagnieździć. Pracowałem nad tym przez tydzień. –

+0

Co się stanie, jeśli w polu Adres dla kraju zostanie ustawiona opcja IdCountry zamiast nazwy i kodu (pod warunkiem, że IdCountry jest kluczem podstawowym kraju)? – Apocatastasis

0

Chciałbym stworzyć mapę do Country i używać m.References(x => x.Country).

+3

Ale czy nie byłoby to traktowanie kraju jako Podmiotu, a nie przedmiotu wartości? Może jednak nie ma co robić. – UpTheCreek

+2

Występuje wada. Jednostki mają własne "życie" (co wpływa na wszystkie wybieranie i aktualizowanie zapytań) i nie chcemy tutaj mieć "adresu", który żyje sam. – NOtherDev

Powiązane problemy