eine Klasse wie folgt vorstellen:Karte Flaggen Enum-Eigenschaft auf separaten Tabelle
public class MyEntity : Entity
{
public virtual States States { get; set; }
}
[Flags]
public enum States
{
None,
State1 = 1,
State2 = 2,
State3 = 4,
State4 = 8
}
Ich möchte es auf diese Tabelle zur Karte:
TABLE MY_ENTITY
ID: PK
STATES_ID : FK to MY_ENTITY_STATES
TABLE MY_ENTITY_STATES
ID: PK
IS_STATE1_SET (bit)
IS_STATE2_SET (bit)
IS_STATE3_SET (bit)
IS_STATE4_SET (bit)
ist das möglich?
Dies ist ein Legacy-Szenario, ich kann die Datenbank nicht ändern.
Wie pro Antrag, hier einige Daten Beispiel:
Tabelle MY_ENTITY
ID | STATES_ID
---+----------
14 | 35
Tabelle MY_ENTITY_STATES
ID | IS_STATE1_SET | IS_STATE2_SET | IS_STATE3_SET | IS_STATE4_SET
---+---------------+---------------+---------------+--------------
35 | 0 | 1 | 0 | 1
Diese auf einen Wert von States.State2 | States.State4
in der States
führen sollte Eigentum in der MyEntity
Instanz mit der ID 14.
Danke, das sieht gut aus. Ich werde es morgen testen. Können Sie bitte eine Skizze des Mappings in Fluent NHibernate zur Verfügung stellen? –
.Join (etwas ... Map (theproperty) .Type (thetype) ... so etwas :-) Ich benutze nicht fließend; Sie müssen es mit Intellisense herausfinden. –
Ich bin nicht ganz sicher, wie man das macht. In der von Ihnen bereitgestellten Verknüpfung wird die Implementierung von ICompositeUserType als Mapping zwischen einer Klasse mit zwei Eigenschaften und zwei Spalten eingeführt. Aber ich habe nur ein enum ohne Eigenschaften. Was würde ich z. für 'PropertyTypes' oder' PropertyNames'? –