2013-06-18 3 views
6

저는 유형 공급자, 특히 SQL 엔터티 프레임 워크 유형 공급자를 가지고 놀고 있습니다. 많은 객체가있는 데이터베이스에 대한 테스트를 작성하고 있으며 원격이므로 연결 속도가 조금 느립니다. 프로젝트를 빌드 할 때마다 빌드를 완료하는 데 몇 분이 걸립니다.F # 유형 공급자 매우 매우 느림 빌드

컴파일러가 형식 정보를 캐시하지 않는 이유는 무엇입니까?

P. F # 대화 형으로 더욱 악화됩니다.

+0

의 DLL에 대한 참조를 추가해야? 비교할 점은 무엇입니까? 다른 유형의 백엔트에 대해 타입 제공자를 시도 했습니까? 지나치게 광범위한 질문이므로 닫으십시오. –

+1

매번 몇 분이 걸리는 빌드는 너무 오래 걸립니다. 다른 모든 빌드와 비교하면됩니다. –

+0

매번 몇 분이 걸리는 빌드? 필자는 상용 C++ 응용 프로그램을 개발할 때마다 우리가 구축 할 때마다 빌드하는 데 30 분의 1 시간이 걸렸습니다. 여러 차례의 최적화가 끝난 후였습니다. 매번 장난감 코드를 만드는 경우가 아니라면 컴파일에 약간의 시간이 걸릴 것입니다. "너무 느리다"는 말은 "사용하기가 너무 어렵다"는 최종 사용자와 비슷합니다. 모호하고 쓸모가 없습니다. –

답변

9

데이터 공급자에 대해 LocalSchemaFile 속성을 사용해보십시오. 이 형식을 생성하는 데 사용되는 .csdl 파일을 가리 킵니다. ForceUpdate 특성을 true로 설정하여 형식 공급자가이 파일을 업데이트하게 할 수 있습니다. 캐시 된 스키마에서 실행하려면 단순히 ForceUpdate를 false로 설정하십시오. 다음은 SqlDataConnection 공급자를 사용하여이 작업을 수행하는 방법입니다.이 공급자는 SqlEntityConnection 공급자와 매우 유사합니다. (당신은 빨강, 녹색 TDD 개발 서클에있는 경우, 신속하게 느려질 빌드!)는 '느린 빌드'로 정의 될 수있는 게다가

type schema = SqlDataConnection< LocalSchemaFile = "Schema.dbml", ForceUpdate = false, ConnectionString = @"Data Source=<insert your connection string here>" > 
0

, 나는 별도의 프로젝트 내 클라이언트 유형 공급자 코드를 이동했다. 나는 이미 ForceUpdate를 false로 설정했지만 여전히 빌드가 느리다. (분명히 생성 된 dbml 파일에 대한 백그라운드 검사는 사실 내 wsdlschema 파일에서 진행되고 있었다.)

모든 유형 공급자 코드를 별도의 프로젝트로 이동 한 후 빌드가 훨씬 빨라졌습니다!

참고 : 대화가 더 빨랐다로드 만 당신은 당신이 속도가 느린 생각이에 대해 벤치마킹하는 어떤 종류