7 Stimmen

Entity Framework : Hinzufügen von Eigenschaften/Entitäten zur Laufzeit

Ich möchte das Entity Framework verwenden. Allerdings habe ich auch die Anforderung, meinen Benutzern die Möglichkeit zu geben, benutzerdefinierte Felder in unserem System zu definieren. Ich möchte immer noch das Entity-Framework verwenden und nicht eine partielle Klasse mit einer Hashtabellen-Eigenschaft verwenden.

Nachfolgend ist die Lösung, an die ich gedacht habe, aber sie ist nicht einfach, so dass ich gerne sehen würde, ob es einen besseren Weg gibt.

Meine Idee ist derzeit, ein ModelManager-Objekt zu haben, das eine Spalte in der entsprechenden Tabelle erstellt, die EDM-Dateien ändert und die Dateien mit edmgen.exe kompiliert. Dies alles müsste in einem anderen Prozess und/oder einer anderen Anwendungsdomäne als der Anwendung geschehen, da die Anwendung auf die resultierende Baugruppe verweisen würde. Wenn die Anwendung neu gestartet wird, hat sie Zugriff auf das neu hinzugefügte Feld.

Ist dies die einzige Möglichkeit, dies mit dem Entity Framework zu tun? Vielen Dank für Ihre Zeit.

1voto

CoderGuy Punkte 135

Nach der Lektüre einiger Blogeinträge des Entity-Framework-Teams und von Julie Lerman klingt es so, als ob sie dies für die nächste Version einfacher machen wollen. Was bedeutet, soweit ich sagen kann, die Art und Weise ich in der Frage angegeben ist der beste Weg, um dynamisch Felder zum Entity Framework hinzufügen.

0voto

Nick Berardi Punkte 53415

Sie werden am Ende mehr Zeit damit verbringen, diese Lösung zum Laufen zu bringen, als Ihr gesamtes Projekt mit HashTables zu erledigen. Ich glaube nicht wirklich, dass das Entity Framework für diese Situation geeignet ist, weil,

  1. Ihr Code wäre nicht darauf programmiert, die neuen Felder zu verwenden, die erzeugt wurden.
  2. müssen Sie die aktuelle Baugruppe aus der Anwendungsdomäne entladen und die neue Baugruppe neu laden
  3. Sie bereiten sich wirklich auf ein Scheitern vor.

Es tut mir leid, aber es gibt einfach einige Probleme, die sich nicht ohne weiteres auf bestimmte Rahmenwerke anwenden lassen.

0voto

John B Punkte 19411

Ich werfe das nur mal so in den Raum...

Sie könnten Erweiterungsmethoden und/oder eine partielle Klasse verwenden, damit Objekte ein Wörterbuch mit Schlüssel/Wertpaaren für benutzerdefinierte Felddaten akzeptieren. Nach dem Speicherereignis könnten Sie diese Daten dann mit direktem SQL einfügen/aktualisieren.

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