私は各顧客が自分のアカウントのカスタマイズされた登録フォームを定義する機能を追加する機能を開発中です。オブジェクトの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]
?
Joinメソッドが機能しましたが、Fluentの正しい構文を理解するために少し検索する必要がありました。 – Hamman359
@ Hamman359:それを提供するように気をつけますか? –