2012-03-31 12 views
0

Ich möchte die neue Migrationsfunktion von EF verwenden, aber auf meinem lokalen Computer, wenn ich eine Medium Trust-Umgebung simuliere, die "Vertrauensebene = Medium" in der Datei web.config hinzufügt diese Sicherheitsausnahme:Entity Framework 4.3 Migrationen und mittleres Vertrauen

System.Reflection.RuntimeMethodInfo.GetMethodBody() +24 
    System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration, DbContext usersContext) +1031 
    System.Data.Entity.Migrations.DbMigrator..ctor(DbMigrationsConfiguration configuration) +66 
    System.Data.Entity.MigrateDatabaseToLatestVersion`2.InitializeDatabase(TContext context) +52 
    System.Data.Entity.<>c__DisplayClass2`1.<SetInitializerInternal>b__0(DbContext c) +75 
    System.Data.Entity.Internal.<>c__DisplayClass8.<PerformDatabaseInitialization>b__6() +19 
    System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +72 
    System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +185 
    System.Data.Entity.Internal.LazyInternalContext.<InitializeDatabase>b__4(InternalContext c) +7 
    System.Data.Entity.Internal.RetryAction`1.PerformAction(TInput input) +118 
    System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action`1 action) +190 
    System.Data.Entity.Internal.LazyInternalContext.InitializeDatabase() +73 
    System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +28 
    System.Data.Entity.Internal.Linq.InternalSet`1.Initialize() +57 
    System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext() +15 
    System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider() +37 
    System.Linq.Queryable.Where(IQueryable`1 source, Expression`1 predicate) +63 

EF Migration funktioniert nur in voller Vertrauensstellung?

+0

Was genau wollen Sie wissen? – Steven

+0

Ich möchte wissen, ob Migrationen in Medium Trust nicht funktionieren können oder ich habe einige Probleme auf meinem Computer. –

+1

Aktualisieren Sie Ihre Frage, um dies zu verdeutlichen und Informationen über die Ausnahme oder den Fehler, den Sie erhalten, hinzuzufügen. – Steven

Antwort

2

Die erste EF migrations CTP erwähnt die volle Vertrauensgrenze mit Hinweis, dass es in zukünftigen Version adressiert werden kann, aber keine zukünftige Version erwähnt diese Einschränkung als behoben, so dass es höchstwahrscheinlich noch existiert.

if (method != null) 
{ 
    this._hasSeedLogic = method.GetMethodBody().GetILAsByteArray().Length > 2; 
} 

zu:

if (method != null) 
{ 
    this._hasSeedLogic = true; 
} 

mit Reflektor und REFLEXIL Plugin

+0

Danke Ladislav. –

+0

Ist für die ersten Migrationen von Entity Framework-Code immer noch die vollständige Vertrauensstellung der Version 4.3 erforderlich? – IsmailS

+1

@iSid: Die Frage war für Version 4.3 und Release Notes für 4.3.1 habe dies nicht als behoben erwähnt also nehme ich ja an. –

0

Sie können den folgenden Code in System.Data.Entity.Migrations.DBMigrator Klassenkonstruktors ersetzen. Nach diesem Hack funktioniert es in einer Medium Trust-Umgebung.

Wenn Sie mir vertrauen, können Sie die gepatchte dll (EF 5.0 Beta 2) von here

2

Um Ihre Überlegung herunterladen: Ich habe gerade herausgefunden, was das Problem in meinem Fall mit EF und mittlerer vertrauenswürdiger Umgebung war .

Nach dem Lesen this article und einige Code-Revision zu tun, entdeckte ich, dass eine meiner EF-Modell-Klasse eine andere Klasse aggregiert, die private Eigenschaften hat. Es scheint, dass EF versucht, diese Eigenschaften zu laden, was in einer mittelgroßen vertrauenswürdigen Umgebung nicht erlaubt ist. Das Entfernen dieses Verweises aus meiner Modellklasse (ich kopiere stattdessen die erforderlichen Eigenschaften) löste mein Problem, das zur ReflectionPermission-Ausnahme führte.

Wenn das nicht hilft, gibt es eine andere Möglichkeit, die einige Leute behaupten, dass es ihnen geholfen hat. Dieses Attribut sich am Anfang Ihrer Modelldatei oder in AssemblyInfo.cs:

[assembly:AllowPartiallyTrustedCallers] 

Lesen Sie mehr über it here.

Verwandte Themen