2010-01-15 4 views
4

Fluent NHibernate로 enum 값의 컬렉션을 매핑하려고합니다.Fluent NHibernate로 간단한 요소 컬렉션 매핑하기

IList<EnumType> lst; 

나는 그것에 관한 문서를 찾을 수 없지만 가능한 것이 확실합니다. 엔티티 컬렉션을 매핑하는 데 전혀 문제가 없었습니다.

감사 레오나르도

+0

매우 간단 했으므로 Fluent Nhibernate에서 컬렉션에 대한 요소 ("") 태그를 사용해야합니다. – Homer1980ar

+0

그런 다음 완전한 정답을 작성하고 동의하십시오. 그런 식으로 사람들은 여전히 ​​그것을 상향 줄 수 있습니다. –

답변

1

hasMany의 (X => x.Items) .Table (「TBL」) .KeyColumn ("FK") .Element ("ECOL") .AsBag()

4

다음 FNH 매핑 서명을 사용하여 단순 값 형식 컬렉션을 매핑 할 수 있습니다.

  • 컬렉션 : 값 형식의 컬렉션 (즉,이 정수 (int)로 매핑되기 때문에 enum 될 수 있습니다)

    HasMany(x => x.Collection) 
        .Table("TableName") 
        .KeyColumn("KeyColumnName") 
        .Element("ValueColumnName"); 
    

    .

  • TableName : 컬렉션 값을 저장할 테이블의 이름입니다.
  • KeyColumnName : 키 값을 부모에게 다시 저장하는 열의 이름입니다.
  • ValueColumnName : 실제 값을 저장할 열의 이름입니다.

몇 가지 값 유형 모음을 매핑하는 방법의 예를 참조하십시오.

public enum EnumType 
{ 
    Value1, 
    Value2, 
    Value3 
} 

public class Entity 
{ 
    /// <summary> 
    /// Primary key 
    /// </summary> 
    public virtual int Id { get; set; } 

    /// <summary> 
    /// Collection of strings 
    /// </summary> 
    public virtual IList<string> StringCollection { get; set; } 

    /// <summary> 
    /// Collection of enums 
    /// </summary> 
    public virtual IList<EnumType> EnumCollection { get; set; } 

    /// <summary> 
    /// Collection of dates/times 
    /// </summary> 
    public virtual IList<DateTime> DateTimeCollection { get; set; } 
} 

public class EntityMap : ClassMap<Entity> 
{ 
    public EntityMap() 
    { 
     // Map primary key. 
     Id(x => x.Id); 

     // Map value collections 
     HasMany(x => x.StringCollection) 
      .Table("Entity_String") 
      .KeyColumn("EntityId") 
      .Element("String"); 

     HasMany(x => x.EnumCollection) 
      .Table("Entity_Enum") 
      .KeyColumn("EntityId") 
      .Element("Enum"); 

     HasMany(x => x.DateTimeCollection) 
      .Table("Entity_DateTime") 
      .KeyColumn("EntityId") 
      .Element("DateTime"); 
    } 
} 

이 매핑의 결과는 4 개의 테이블을 생성합니다.

  1. 하나의 열 ID가있는 테이블 엔터티 int.
  2. 테이블 Entity_String (EntityId : int, String : varchar 및 EntityId to Entity 테이블 ID 열).
  3. ... 마찬가지로 int는 int 유형입니다.
  4. ... 마찬가지로 datetime 형식의 열입니다.
관련 문제