2010-11-29 15 views
0

私は各顧客が自分のアカウントのカスタマイズされた登録フォームを定義する機能を追加する機能を開発中です。オブジェクトの1つに対してFluent NHibernateマッピングを作成します。2つのテーブルのフィールドをマップして1つのエンティティを作成する

[RegistrationField][AccountRegistrationField]の2つのテーブルがあります。 [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]からフィールドのカップルが含まれていることです。

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クエリは次のとおりです:

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はをマッピングする方法が本当にわからないオブジェクトは、次のようになります同じ結果。

[RegistrationField]から必要な値を保存しなくても、これをどうやって行うことができるか考えてください。[AccountRegistrationField]

答えて

0

これを実現するにはjoinを使用できます。

私はXMLを使用しますが、同等のFluentメソッドはおそらくJoinと呼ばれます。

+0

Joinメソッドが機能しましたが、Fluentの正しい構文を理解するために少し検索する必要がありました。 – Hamman359

+0

@ Hamman359:それを提供するように気をつけますか? –