2009-12-09 3 views
0

나는 다음과 같은 클래스가 있습니다단일 행에 배열을 매핑

public class InventoryItem 
{ 
    private Usage[] usages = new Usage[12]; 
    virtual public Usage[] Usages { get { return usages; }} 
    virtual public string Name{get;set;} 
} 

public class Usage 
{ 
    virtual public double Quantity{get;set;} 
    virtual public string SomethingElse{get;set;} 
} 

내가 Usages.Length 항상 12. 나는 그렇게 같은 DB에 저장하는 을 가장 좋은 것이라고 생각 될 것이라고 알고있다 :

Name nvarchar(64), 
Usage_Quantity_0 float, 
Usage_SomethingElse_0 nvarchar(16), 
Usage_Quantity_1 float, 
Usage_SomethingElse_1 nvarchar(16), 
... 
Usage_Quantity_11 float, 
Usage_SomethingElse_11 nvarchar(16), 

어떻게해야합니까?

답변

0

배열과 12 개의 전용 필드로 변환하는 getter/setter는 어떻습니까? Hibernate (나는 NHibernate에 대해 모른다)에서 필드에 매핑을 배치 할 수 있으며, 의 두 열에 매핑 할 Usage 엔티티를 embeddable 엔티티로 사용할 수있다. 임베디드 엔티티가 NHibernate에서 사용 가능하지 않다면 24 개의 필드가 필요합니다.

고정 카디널리티가있는 경우에도 일대 다 관계가 여전히 바람직 할 수 있습니다. 성능에 대해 걱정이된다면 N + 1 문제와 열망하는 검색을 검색하십시오.

+0

예, NHibernate는이 경우 컴포넌트 라 불리는 임베디드 엔티티와 동등한 것을 지원합니다 : https://www.hibernate.org/hib_docs/nhibernate/html/components.html – ewernli

관련 문제