Wesentlichen der Titel dieser Frage erklärt die essense von dem, was ich zu tun versuchen, sondern ein konstruiertes Beispiel zu erstellen ...Karte eine Strategie-Muster mit Fluent NHibernate
ich eine Klasse haben, rufen Sie es Mitarbeiter. Mitarbeiter hat eine IPaymentBehaviour ...
public class Employee
{
IPaymentBehaviour _paymentBehaviour;
protected internal Employee() { /* required by NH */}
public Employee(IPaymentBehaviour paymentBehaviour)
{
_paymentBehaviour = paymentBehaviour;
}
}
Dies entspricht einer Datenbanktabelle wie folgt:
dbo.Employees
-> EmployeeId (Primärschlüssel)
-> PaymentBehaviourId (Fremdschlüsseltabelle zum Nachschlagen
) -> Field1
-> Field2
-> Field3
-> Field4
Abhängig vom Wert von PaymentBehaviourId muss ich eine andere Implementierung von IPaymentBehaviour in das Employee-Objekt "injizieren". Abhängig davon, welcher PaymentBehaviour verwendet wurde, kann Field1, 2, 3 oder 4 erforderlich sein, um dieses Verhalten zu erstellen.
Kann mir jemand sagen, wie dies mit Fluent-NHibernate abgebildet werden würde?
Was meinen Sie mit "Feld1, 2, 3 oder 4 könnte erforderlich sein, um dieses Verhalten zu erstellen"? Was meinst du mit "erstellen"? Ist es möglich, das Datenbankdesign zu ändern? –
Ich meine, das sind die Namen in der Tabelle, und abhängig davon, welches Verhalten erforderlich ist, würden Sie diese Felder verwenden, um die Instanz dieses Verhaltens zu erstellen. Es ist möglich, das db-Design zu ändern, ja, aber wir haben viele mögliche Kombinationen, so dass es so allgemein wie möglich sein muss. – KevinT