2012-03-31 5 views
0

EF의 새로운 마이그레이션 기능을 사용하고 싶지만 중간 신뢰 환경을 시뮬레이트 할 때 로컬 컴퓨터에서 web.config 파일에 "trust level = Medium"을 추가하면 이 보안 예외 :Entity Framework 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 모델 클래스 중 하나가 개인 속성을 가진 다른 클래스를 집계한다는 것을 발견했습니다. EF는 중간 신뢰 환경에서 허용되지 않는 속성을로드하려고 시도합니다. 내 모델 클래스에서이 참조를 제거하면 (지금 필요한 속성을 복사하는 대신) ReflectionPermission 예외가 발생하여 문제가 해결되었습니다.

이것이 도움이되지 않는다면, 어떤 사람들은 도움이되었다고 주장하는 또 다른 옵션이 있습니다. 는 모델 파일의 beggining 또는 AssemblyInfo.cs에이 속성을 추가

[assembly:AllowPartiallyTrustedCallers] 

보다 약 it here 읽어보십시오.

관련 문제