3 Stimmen

Entity Framework - Unterscheidung bei mehreren Werten

Ist es in einem Table-Per-Hierachy-Szenario möglich, anhand einer Liste möglicher Werte zu unterscheiden?

z.B. für die Typen Color, DarkColor, LightColor

etwas wie

 Map<DarkColor>(m => m.Requires("TheColor").HasValue(Red || Blue)
 Map<LightColor>(m => m.Requires("TheColor").HasValue(Yellow || White)

ein schlechtes Beispiel, aber ich hoffe, Sie verstehen, worum es geht!

1voto

Danny Varod Punkte 16437

Nein, das ist nicht möglich.

Das Entity-Framework ermöglicht nur ein Mapping über eine Schnittmenge von Bedingungen, nicht über eine Vereinigung von Bedingungen.
Sie können dies sowohl in der Designer[1] und in der EDMX-Syntax[2].
* Der erste Code sollte die gleichen Zuordnungsmöglichkeiten haben.

[2] Wenn Sie mit der rechten Maustaste auf die edmx-Datei klicken und "Öffnen mit..." wählen --> "Automatic Editor Selector (XML)" wählen und versuchen, die Mapping-Bedingungen manuell zu bearbeiten, werden Sie (über die Intellisense) sehen, dass es keine Möglichkeit gibt, "OR" zwischen den Bedingungen einzugeben.

0voto

hazimdikenli Punkte 5242

Zunächst einmal bin ich mir nicht sicher, ob das, was Sie wollen, möglich ist. EF möchte sich um die Diskriminatorspalte kümmern und auf der Grundlage des Klassentyps den Diskriminatorwert festlegen, aber wie soll es in diesem Fall den Wert festlegen, auf welchen möglichen Wert. Es macht keinen Unterschied, wenn es von der DB geladen wird, aber ein wenig problematisch, wenn versucht wird, es in die DB zu serialisieren.

1- haben Sie versucht, mehrere Karten für jeden möglichen Wert zu erstellen:) Möglicherweise erhalten Sie die Fehlermeldung, dass DarkColor bereits zugewiesen wurde.

2 - Der zweite Vorschlag ist das Hinzufügen eines [NotMapped] ColorWeight-Attributs und die Rückgabe von dunkel oder weiß auf der Grundlage von theColor und die Verwendung dieser Eigenschaft als Diskriminatorfeld, aber ich denke, das Diskriminatorfeld sollte in der Tabelle vorhanden sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X