2008-09-02 10 views
1

Gibt es eine Möglichkeit, den Klassen-Builder für Entity Framework zu übernehmen? Ich möchte in der Lage sein, meinen eigenen Klassenerbauer zu haben, also kann ich einige Eigenschaften machen, um andere Methoden auf Materialisierung anzurufen oder die Teilklassen partiell zu machen.Wie Entity Framework-Klassen anpassen?

Antwort

3

Eigentlich sind sie schon in Teilklassen. Siehe MSDN

0

ich hinzufügen werde, dass nicht nur Sie auf Ihre eigene Klasse Teilklassen denen emittiert von der Entity Framework heften können, aber Sie können auch durch den generierten Code erstellt alle Teil Methoden schreiben .

IE. Es wird eine Menge partieller Methodencode geben, der aufgerufen wird, aber die Methode selbst im generierten Code ist nicht wirklich implementiert. Dazu können Sie eine partielle Methode schreiben, um Ereignisse zu erfassen, wenn sich Eigenschaften ändern. Es ist keine schreckliche Art, einige Geschäftsregeln zu behandeln.

2

System.Data.Entity.Design.EntityClassGenerator, ist der in VS verwendete Typ, um den Objektlayer aus Ihrer EDMX-Datei zu generieren, und es ist der Typ, der von EdmGen.exe verwendet wird, um den Objektlayer aus einer CSDL-Datei zu generieren. Im Folgenden habe ich die 3 Möglichkeiten aufgeführt, wie Sie den generierten Code beeinflussen können. Die dritte Option erfordert, dass Sie EntityClassGenerator selbst aufrufen. Sie können Ihren Code automatisch in VS sortieren wie ein SingleFileGenerator von using this technique präsentiert von Sanjay.

  1. Add-Code auf die Typen durch Teilklassen
  2. Code hinzufügen zu den Teil Methoden die
  3. von den generierten Klassen aufgerufen werden
  4. Haken Sie die Codegenerierung Ereignisse Code zu injizieren direkt in die Eigenschaften und Typen, wie sie generiert werden. Siehe Danny's blog post für ein Beispiel