我正在開發一項功能,爲每位客戶添加能力,以便爲其帳戶定義自定義註冊表單,並且遇到了一些障礙爲其中一個對象創建我的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]
幾個領域。對象會是這個樣子:
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 2010-11-29 19:38:40