2012-03-31 19 views
0

私はEFの新しい移行機能を使用したいと思いますが、web.configファイルに「信頼レベル=中」を追加したMedium Trust環境をシミュレートすると、ローカルマシンではこのセキュリティ例外:エンティティフレームワーク4.3移行とミディアムトラスト

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移行は完全信頼でのみ機能しますか?

+0

正確に知りたいことは何ですか? – Steven

+0

移行が中規模の信頼では機能しないか、私のマシンにいくつかの問題があるかどうかを知りたい。 –

+1

質問を更新してこれを明確にし、取得している例外またはエラーに関する情報を追加してください。 – Steven

答えて

2

最初のEF migrations CTPには完全信頼の制限が記載されていますが、将来のリリースでは対処できますが、将来のリリースではこの制限が固定されていると言われています。

+0

ありがとうLadislav。 –

+0

Entity Frameworkコードの最初の移行では、依然としてバージョン4.3の完全な信頼が必要ですか? – IsmailS

+1

@iSid:質問はバージョン4.3で、4.3.1のリリースノートでは修正されていないと言われました。 –

0

あなたはSystem.Data.Entity.Migrations.DBMigratorクラスのコンストラクタに次のコードを置き換えることができます。

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

に:リフレクターとReflexilプラグインと

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

。このハックの後、中程度の信頼環境で動作します。

あなたは私を信頼している場合、あなたはあなたの考察にhere

2

からパッチを適用したDLL(EF 5.0ベータ2)をダウンロードすることができます: 私はEFとメディアの信頼環境と私の場合の問題点だったものを発見しました。

this articleを読んだ後、コードリビジョンを作成したところ、自分のEFモデルクラスの1つがプライベートプロパティを持つ別のクラスを集約していることがわかりました。 EFはこれらのプロパティをロードしようとしているようですが、これは中程度の信頼環境では許可されていません。モデルクラスからこの参照を削除すると(今必要なプロパティをコピーしています)、ReflectionPermission例外が発生していた問題が解決されました。

これは役に立ちませんが、それが役に立ったと主張する人もいます。 は、モデルファイルのbegginingで、またはAssemblyInfo.csにこの属性を追加します。

[assembly:AllowPartiallyTrustedCallers] 

it hereについては、こちらをご覧ください。

関連する問題