Laden...

Dynamisch generierte EF6 Proxy-Assembly dekompilieren

Erstellt von Palladin007 vor 6 Jahren Letzter Beitrag vor 3 Jahren 1.812 Views
Palladin007 Themenstarter:in
2.078 Beiträge seit 2012
vor 6 Jahren
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

6.911 Beiträge seit 2009
vor 6 Jahren

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!"

Palladin007 Themenstarter:in
2.078 Beiträge seit 2012
vor 6 Jahren

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!

B
2 Beiträge seit 2020
vor 3 Jahren

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

16.807 Beiträge seit 2008
vor 3 Jahren

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.

B
2 Beiträge seit 2020
vor 3 Jahren

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

16.807 Beiträge seit 2008
vor 3 Jahren

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