미리 컴파일 된 뷰없이 코드 우선 전략과 함께 EF6 rc1을 사용하고 있습니다. 문제는 다음과 같습니다. exe 응용 프로그램을 컴파일하고 실행하면 첫 번째 쿼리를 실행하는 데 15 초 (괜찮습니다. 미리 생성 된 뷰에서 계속 작업 중이므로). 내가 첫 번째 쿼리 실행하기 전에 거의 2 분 소요 동일한 응용 프로그램을 디버깅 비주얼 스튜디오 2013 미리보기를 사용한다면 :EF6/코드 첫 번째 : 첫 번째 쿼리에서 Super가 느려지지만 디버그에서만 발생
Dim Context = New MyEntities()
Dim Query = From I in Context.Itens '' <--- The debug takes 2 minutes in here
Dim Item = Query.FirstOrDefault()
를이 여분의 시간을 제거 할 수있는 방법이 있습니까? 내가 여기서 뭔가 잘못하고있는거야?
Ps .: 컨텍스트 자체가 복잡하지 않으며 200 개 이상의 테이블로 가득합니다.
편집 : 문제는 디버그 시간 동안 EF가 미리 생성 된 것들을 무시하는보기를 생성하는 것으로 나타났습니다. EF의 소스 코드를 사용 나는 재산 것을 발견 : 시간이 소비되는 위치
IQueryProvider IQueryable.Provider
{
get
{
return _provider ?? (_provider = new DbQueryProvider(
GetInternalQueryWithCheck("IQueryable.Provider").InternalContext,
GetInternalQueryWithCheck("IQueryable.Provider").ObjectQueryProvider));
}
}
입니다. 그러나 이것은 디버그에 시간이 걸리기 때문에 이상합니다. 내가 여기서 뭔가를 놓치고 있니?
편집 : 질문과 관련된 더 많은 정보 발견 : Process Monitor (Sysinternals 제공)를 사용하여 시간이 오래 걸리는 'desenv.exe'프로세스가 있음을 알게되었습니다. 더 구체적으로 말하자면 'Thread Exit'로 시간 소모. 스레드 종료 스택을 36 번 반복합니다. 이 정보가 매우 유용 할 지 모르겠지만 스택과 함께 '.cvs'를 저장했습니다. 그의 시체는 다음과 같습니다. [...] (편집 : '.cvs'본문이 제거되었으므로 다시 게시 할 수 있습니다. 누군가가 실제로 유용하다고 생각한다면 의견에 의해 혼란스럽고 너무 컸습니다.)
편집 : 설치된 VS2013 Ultimate 및 Entity Framework 6 RTM. Entity Framework Power Tools Beta 4를 설치하고 뷰를 생성하는 데 사용했습니다. 아무 것도 바뀌지 않았습니다 ... 만약 내가 exe를 실행하면 20 초가 걸릴 것입니다. 디버깅을 시작하면 120 초가 걸릴 것입니다.
편집 : 오류를 시뮬레이트하는 작은 프로젝트를 만들었습니다. http://sdrv.ms/16pH9Vm 환경 내에서 프로젝트를 실행하고 .exe를 통해 직접 실행하고 버튼을 클릭하고 로딩 시간을 비교하십시오.
이 .. 나는 그들이 EF6 그것을 해결하기 위해 줄 알았는데 꽤 많은 시간 동안 EF을 괴롭힌 일반적인 문제입니다 만 아마 .. 한 가지의 EF6가 제공하는이 모델을 분해하는 기능입니다입니다 최선의 방법이 될 수있는 여러 모델로 –
http://entityframework.codeplex.com/wikipage?title=ultiantant%20Migrations –
여러 상황에서 위반하면 아무 것도 변경되지 않았습니다.모든 컨텍스트는 '규칙'을 따르므로 요청시로드하지 않는 한로드하는 데 거의 같은 시간이 걸리지 만 둘 사이에 많은 양의 외래 키가 있기 때문에 모두로드해야합니다. –