Laden...

Dynamisch generierte EF6 Proxy-Assembly dekompilieren

Letzter Beitrag vor 4 Jahren 7 Posts 1.981 Views
Dynamisch generierte EF6 Proxy-Assembly dekompilieren

Guten Abend,

ich möchte mir anschauen, was EF in den automatisch generierten Proxy-Assemblies tut und wie sich das ändert, wenn ich eine Property automatisch oder mit BackingField implementiere.

Meine Idee war, die geladene Assembly (ist ein InternalAssemblyBuilder) als DLL zu speichern, allerdings habe ich dafür keine Möglichkeit gefunden.

Gibt es einen anderen Weg, wie ich die Binaries zu den Proxy-Klassen bekomme, dass ich mir anschauen kann, was EF aus meinen Models macht?

Beste Grüße

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

Hallo Palladin007,

Viewing Generated Proxy Code for Entity Framework 5 Code First -- ich hab aber nicht probiert ob es mit EF 6.1 auch noch geht, denke aber schon. Mit EF Core wird dies nicht gehen.

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Wunderbar, das hab ich gesucht ^^

Es waren nur zwei kleine Änderungen notwendig:

Der Typ "System.Data.Objects.Internal.EntityProxyFactory" liegt jetzt im Namespace "System.Data.Entity.Core.Objects.Internal".
Es muss also heißen "System.Data.Entity.Core.Objects.Internal.EntityProxyFactory"

Das Feld "s_ModuleBuilders" heißt jetzt "_moduleBuilders".

Der Rest ist (bei Version 6.1.3) gleich geblieben.

Merkwürdig ist allerdings, dass die Proxy-Klassen nicht in der dll liegen, die ich gespeichert habe, sondern in einer "EntityProxyModule.dll", die von der von mir gespeicherten dll referenziert wird.
"Meine" dll ist dagegen leer, sie enthält nur die EntityProxyModule.dll als Resource.

Auf jeden Fall vielen Dank, das ist genau das, was ich wollte!

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

Hello,

Danke für die Hinweise, dass sich da ein paar Sachen geändert haben!

Kleine Ergänzung:
Mit EF 6.3.0 dürfte es

s_ProxyAssemblyBuilderAccess

nicht mehr geben.

Mit EF 6.2.0 hab ich das ganze noch zum laufen gebracht.

LG

Aufpassen: EF 6.3 ist ein Breaking Change Release, was so auch kommunziert wurde!
EF 6.3 gilt dem Versionsangleich zu EF Core, sodass von EF6 (legacy) dann ganz weg migriert werden kann.

Okay, dh. dass die generierten Proxy Klassen in EF 6.3 etwas anders aussehen?

Weiß ich nicht.
Es war lediglich ein Hinweis nicht "einfach blind zu aktualisieren" 😃