Entity Framework: Spalten ignorieren

entity-framework

Frage

Ich habe eine Datenbank, aus der ich ein EF-Modell erstellen möchte. Ich möchte jedoch bestimmte Spalten aus der Datenbank nicht einschließen, da die betreffenden Spalten ausschließlich auf dem Server verwaltet werden und von keiner Anwendung manipuliert werden dürfen.

Beide Spalten sind DateTime (wenn dies einen Unterschied macht), eine der Spalten ist nullfähig und wird bei Aktualisierungen von einem Trigger verwaltet, und die andere ist nicht nullfähig und wird unter Verwendung eines Standardwerts in der Tabellendefinition festgelegt.

Ich denke, ich suche so etwas wie die Option "Server Generated" in Linq2Sql; aber ich kann eine solche Option nicht finden.

Kann mir jemand sagen, wie man das umgehen kann?

Vorbehalt:

Ich versuche seit einigen Jahren, Business Objects-Modellierung an meinem Arbeitsplatz einzuführen, und es wurde immer abgelehnt, da zusätzlicher Code von Hand erstellt werden muss. EF wird derzeit aufgrund der Designer- und Code-Generierung als praktikable Lösung betrachtet. Daher wird jede Option, die das manuelle Drehen der XML-Dateien beinhaltet, nur den Rest meiner Kollegen von EF ablenken. Ich suche daher nach etwas, das entweder mit dem Designer oder mit Code ausgeführt werden kann.

BEARBEITEN:

Ich denke, das, was ich hier suche, ist entweder ...

(a) Eine Möglichkeit zum Erstellen des Modells, ohne dass EF auf die Spalten im Speicher (ssdl) verweist und daher nicht in irgendeiner Weise manipuliert werden soll (b) Eine Möglichkeit, das Attribut "StoreGeneratedPattern" programmgesteuert bei der Erstellung des Moduls zu setzen ObjectContext (die einfache Antwort besteht darin, dies manuell in der .ssdl-Datei zu ändern. Dies wird jedoch überschrieben, wenn das Modell aus der Datenbank aktualisiert wird und ich die Route, auf die die .csdl, .msl & .ssdl-Dateien von Hand verschoben werden, nicht aufrufen kann ).

Beliebte Antwort

Kannst du das mit dem Entity Framework? Ja; es ist einfach. Können Sie das mit dem Entity Framework Designer tun? Das ist leider viel schwieriger.

Sie haben das Problem, dass die Spalte im Speicherschema (SSDL) Ihres EDMX vorhanden ist. Das Entfernen der Spalte mit dem GUI-Designer entfernt sie einfach aus dem Client-Schema, nicht aus dem Mapping oder dem Speicherschema. Es ist jedoch einfach genug, um in das EDMX zu gehen und es zu entfernen. Danach können Sie es auch aus dem Mapping in den Client-Schema-Abschnitten des EDMX entfernen. Das Entitätsframework beschwert sich länger, dass es nicht zugeordnet ist.

Problem gelöst, richtig?

Nun, nein. Wenn Sie den EDMX mit dem GUI-Designer aus der Datenbank aktualisieren, wird das Speicherschema verworfen und erneut generiert. Also kommt deine Kolumne zurück. Soweit ich weiß, gibt es keine Möglichkeit, dem GUI-Designer zu sagen, dass er niemals eine bestimmte Spalte zuordnen soll. Sie müssen dies also jedes Mal wiederholen, wenn Sie ein Update mit dem GUI-Designer durchführen. Glücklicherweise handelt es sich bei EDMX um XML, sodass Sie dies mit einer XML-Transformation, LINQ oder einem XML-Tool Ihrer Wahl tun können.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum