2014-07-10 6 views
11

는 나는이 espEntities.Configuration.ProxyCreationEnabled = false를 설정하고, 5비활성화 동적 프록시는 전 세계적으로

현재 엔티티 프레임 워크에서 생성 된 모든 개체에 대한 동적 프록시를 어떻게 해제 할 수 있습니다주세요 dbcontext의 모든 인스턴스에서 한 번 작업으로 현재 및 미래 모델에 대해이 작업을 수행 할 수있는 방법이 있습니다.

Tahnks 당신이 EDMX 모델이있는 경우

답변

20

방법 1

는 부분 클래스가 생성됩니다. 그것을 사용하고 OnContextCreated에 당신은 ProxyCreationEnabled

public partial class MyModelContainer 
{ 
    public void OnContextCreated() 
    { 
     this.Configuration.ContextOptions.ProxyCreationEnabled = false; 
    } 
} 

방법 2

편집 model.tt 파일을 해제 할 수 있습니다. 당신의 컨텍스트 생성자에서 그것을 할,

partial class <#=code.Escape(container)#> : DbContext 

그리고

this.Configuration.ProxyCreationEnabled = false; 

방법 3

당신이 EDMX 파일을 사용하지 않는 경우에 추가 : 같은 라인이 포함 무언가를 찾기 (귀하의 컨텍스트가 EspEntities라고 가정)

public class EspEntities : DbContext 
{ 
    public EspEntities() 
    { 
     Configuration.ProxyCreationEnabled = false; 
    } 
} 
+0

안녕하세요 David 이 경우 컨텍스트 생성자는 model.context.cs에 있습니다. 그러나이 경우 EDMX 모델이 업데이트되고 변경 사항을 덮어 쓰면 문제가 발생합니다. – user989865

+0

당신을 위해 편집되었습니다. – DavidG

+0

프록시 생성! = 지연로드. 지연 생성은 프록시 생성이 필요하지만 비활성화하면 프록시 생성이 비활성화되지 않습니다. 예를 들어, 프록시 생성도 필요합니다. 변경 추적. 원래 옵션은 템플릿의 출력 대신 템플릿에서 변경하거나 새 파일에 추가하는 것만 큼 (클래스가 부분 클래스 여야 다른 파일에서도 확장 될 수 있습니다) . – hvd

관련 문제