2010-11-18 3 views
5

나는 현재 다음과 같은 구성 요소 맵을 사용하고 있습니다 : 난 단지 한 곳에서 구성 요소/값 객체의 매핑을 정의해야 becuaseFluent Nhibernate - 구성 요소 (값 객체)의 컬렉션을 매핑합니까?

public class UserMapping 
{ 
     public UserMapping() 
     { 
      Id(c => c.Id).GeneratedBy.HiLo("100"); 
      Map(c => c.UserName); 
      Component(c => c.Country, CountryComponentMapping.Map); 
     } 
} 


public sealed class CountryComponentMapping 
{ 
    public static void Map(ComponentPart<Country> part) 
    { 
     part.Map(x => x.CountryName) 
     part.Map(x => x.CountryAlpha2) 
    } 
} 

나는 이것을 좋아한다.

구성 요소 컬렉션에 대해 동일한 의미를 사용하려면 어떻게해야합니까? (예 :이를 사용자 항목의 국가 모음으로 변경하려고한다고 가정하십시오)

+0

구성 요소는 지배 기업의 일부 주소는 고객의 구성 요소 인 유창함 문서의 기본 예제를 생각하지만 테이블이 Customer_City, Customer_ZIP 등 –

답변

7

이것을 구성 요소 컬렉션으로 매핑 할 수 있습니다. 불행히도 HasMany()에는 과부하가 없습니다. ComponentMap의 파생 클래스를 사용하도록 지정할 수있는 Fluent NHibernate의 Component(). 위의 기술 수정을 사용할 수 있습니다.

public sealed class UserMap : ClassMap<User> { 
    public UserMap() { 
     Id(c => c.Id).GeneratedBy.HiLo("100"); 
     Map(x => x.Name); 
     HasMany(x => x.Countries).Component(CountryComponentMapping.Map); 
    } 
} 

public sealed class CountryComponentMapping { 
    public static void Map(CompositeElementBuilder<Country> part) { 
     part.Map(x => x.CountryName); 
     part.Map(x => x.CountryAlpha2) 
    } 
} 
+0

이 대답 해주기도 5 세 이상으로 산다 . 그 동안 변경된 사항이 있습니까? – MarioDS

관련 문제