Ich benutze Entity Framework 5 in der Datenbank First Ansatz und ich benutze edmx Datei.Basisklasse/Entity in EntityFramework 5.0
Die meisten meiner Entitäten haben 6 gemeinsame Felder. Felder wie CreatedAt
, CreatedBy
usw. Jetzt habe ich einige Funktionen als Erweiterungen implementiert, die nur auf IQueryable
jener Entitäten, die die gemeinsamen Felder haben, angewendet werden können. Aber wenn ich die Erweiterungsmethode implementiere, kann auf jeden Typ von IQueryable
zugegriffen werden, da es Typ T ist und ich kann nur definieren, dass der Typ T immer von einem Typ sein sollte.
Also dachte ich, ich kann den Entitäten eine Basisklasse geben, die gemeinsame Felder hat und Typ T als diesen Basistyp definiert. Aber es scheint, ich kann das nicht tun.
Haben Sie eine Idee, wie Sie das lösen oder das umsetzen, was ich oben erklärt habe?
Dank: ted von Entity Framework dann nicht automatisch generierte Klasse aussehen würde. Also, wenn ich die Schnittstelle außerhalb der EDMX-Datei definieren. dann werde ich der Entität sagen, dass sie von dieser Schnittstelle aus implementieren soll. Es ist nicht einfach, alle erforderlichen Entitäten manuell zu bearbeiten, da ich sie beim Aktualisieren der EDMX-Datei erneut durchführen muss. – Amila
Sie berühren den automatisch generierten Code nicht. Dafür sollten teilweise Klassen verwendet werden. Sie erstellen für jede Entität in EF eine Teilklasse (im Ordner "Modelle"). Dort können Sie einen MetadataType für Ihre Modelle definieren (für die Annotation von Daten). Siehe die aktualisierte Antwort. – ataravati
Ja, ich verwende momentan MetadataType. Aber dachte, es könnte ein einfacher Weg sein, dies zu tun, d.h. wie eine Basisklasse einer Entität zu geben, wäre es besser gewesen, wenn es erlaubt hätte, auch eine Schnittstelle innerhalb des Diagramms zu geben. Wie auch immer, es ist so, als ob ich die Partialklasse für alle Entitäten definieren müsste. Vielen Dank für Ihre schnelle Hilfe – Amila