2010-11-29 3 views
0

각 고객이 자신의 계정에 사용자 정의 된 등록 양식을 정의 할 수있는 기능을 추가하는 기능을 개발 중입니다. 객체 중 하나에 대한 Fluent NHibernate 매핑을 생성합니다.두 테이블의 필드를 매핑하여 단일 엔터티 만들기

[RegistrationField][AccountRegistrationField]의 두 테이블이 있습니다. [RegistrationField]에는 선택할 수있는 모든 필드의 정적 목록과 필드 렌더링 방법에 대한 정보 (예 : 텍스트 상자, 선택 상자 또는 확인란)가 들어 있습니다. [AccountRegistrationField]에는 각 계정에 대해 선택된 필드와 필드에 대한 계정 별 정보가 들어 있습니다. 이 테이블은 필드가 표시되어야하는 순서, 선택되어있는 경우 필드의 기본값 및 필드에 대해 표시되어야하는 레이블을 저장합니다.

두 테이블의 기본 구조는 다음과 같습니다 내가하고 싶은 무엇

[RegistrationField] 
fieldID (PK, int, not null) 
fieldName (varchar(50), not null) 
fieldType (varchar(50), not null) 
htmlID (varchar(50), not null) 

[AccountRegistrationField] 
ID (PK, int, not null) 
accountID (FK, int, not null) 
fieldID (FK, int, not null) 
isRequired (bit, not null) 
priority (int, not null) 
label (varchar(50), not null) 
defaultValue (varchar(50), not null) 

[AccountRegistrationField]의 데이터를 표현하는 객체를 생성하지만 그 또한 [RegistrationField]의 필드의 몇 가지가 포함되어 있습니다. 개체는 다음과 같이 보일 것입니다 :

SELECT ar.id 
    ,ar.accountID 
    ,ar.defaultValue 
    ,ar.fieldID 
    ,rf.htmlID 
    ,ar.isRequired 
    ,ar.label 
    ,rf.fieldType 
FROM AccountRegistrationFields ar 
INNER JOIN RegistrationFields rf ON rf.fieldID = ar.fieldID 
WHERE ar.accountID = @AccountID 
ORDER BY ar.priority 

하지만 난 나를주고 유창함 자 NHibernate를 사용하여이지도하는 방법을 정말 잘 모르겠어요 :

public class UserRegistrationField 
{ 
    public virtual int ID { get; set; } //from AccountRegistrationField 
    public virtual int AccountID { get; set; } //from AccountRegistrationField 
    public virtual string DefaultValue { get; set; } //from AccountRegistrationField 
    public virtual int FieldID { get; set; } //from AccountRegistrationField 
    public virtual string HtmlID { get; set; } //from RegistrationField 
    public virtual bool IsRequired { get; set; } //from AccountRegistrationField 
    public virtual string Label { get; set; } //from AccountRegistrationField 
    public virtual int Priority{ get; set; } //from AccountRegistrationField 
    public virtual string FieldType { get; set; } //from RegistrationField 
} 

SQL 쿼리 내가 원하는 걸주는 것은 같은 결과.

[RegistrationField]에서 필요한 값을 저장하지 않고 어떻게 이런 일이 발생할 수 있는지 아이디어가 [AccountRegistrationField]에 있습니까?

답변

0

join을 사용하면이를 수행 할 수 있습니다.

XML을 사용하지만 Fluent 메소드는 아마도 Join입니다.

+0

Fluent에서 올바른 구문을 찾기 위해 약간 검색해야했지만 Join 메서드가 작동했습니다. – Hamman359

+0

@ Hamman359 : 제공하려면 신경을 써야합니까? –

관련 문제