Ich arbeite an einer Funktion, um jedem Kunden die Möglichkeit zu geben, ein benutzerdefiniertes Registrierungsformular für sein Konto zu definieren, und ich bin in ein Hindernis geraten Erstellen meiner Fluent-NHibernate-Zuordnung für eines der Objekte.Kartenfelder aus zwei Tabellen, um eine einzige Entität zu erstellen
Es gibt zwei Tabellen [RegistrationField]
und [AccountRegistrationField]
. [RegistrationField]
enthält eine statische Liste aller Felder, aus denen ausgewählt werden kann, sowie einige Informationen zum Rendern des Feldes (z. B. sollte es ein Textfeld, ein Auswahlfeld oder ein Kontrollkästchen sein). [AccountRegistrationField]
enthält die Felder, die für jedes Konto ausgewählt wurden, sowie alle kontospezifischen Informationen zu den Feldern. Diese Tabelle speichert die Reihenfolge, in der die Felder angezeigt werden sollen, den Standardwert für das Feld, wenn eines ausgewählt ist, und die Bezeichnung, die für das Feld angezeigt werden soll.
Die Grundstruktur der beiden Tabellen ist:
[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)
Was ich ist zu erstellen, ein Objekt tun möchte, die Daten in [AccountRegistrationField]
darzustellen, aber das enthält auch ein paar Felder aus [RegistrationField]
. Das Objekt würde wie folgt aussehen:
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
}
Die SQL-Abfrage mir zu geben, was ich will, ist:
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
aber ich bin nicht wirklich sicher, wie dies Fluent NHibernate kartieren, um mich das gleiche Ergebnis.
Irgendwelche Ideen, wie ich das erreichen kann, ohne die Werte zu speichern, die ich brauche von [RegistrationField]
in [AccountRegistrationField]
?
Die Join-Methode funktionierte, obwohl ich nach etwas suchen musste, um die korrekte Syntax in Fluent herauszufinden. – Hamman359
@ Hamman359: Sorge dafür, es zu liefern? –