MySQL이 포함 된 엔티티 프레임 워크 - 모델을 생성하는 동안 시간이 만료되었습니다.

StackOverflow https://stackoverflow.com/questions/1718739

  •  19-09-2019
  •  | 
  •  

문제

MySQL에 데이터베이스를 구축했으며 Entity Framework와 함께 매핑하려고 시도하지만 EF 컨텍스트에 약 20 개 이상의 테이블을 추가하려고 할 때마다 "GeneratessdleXception"으로 실행되기 시작합니다.

'microsoft.data.entity.design.visualstudio.modelwizard.engine.modelBuilderEngine+GeneratesSdlexception'유형의 예외는 데이터베이스에서 업데이트를 시도하는 동안 발생했습니다. 예외 메시지는 다음과 같습니다. '명령 정의를 실행하는 동안 오류가 발생했습니다. 자세한 내용은 내부 예외를 참조하십시오. '

명령 실행 중에 치명적인 오류가 발생합니다.

시간 초과가 만료되었습니다. 작업이 완료되기 전에 경과하거나 서버가 응답하지 않습니다.

영향을받는 테이블에는 특별한 것이 없으며, 같은 테이블이 아닙니다. 특정 (특정) 수의 테이블이 추가 된 후에는 "시간 초과 만료 된"오류없이 컨텍스트를 더 이상 업데이트 할 수 없다는 것입니다. 때로는 단 하나의 테이블이 남았으며 때로는 세 개입니다. 결과는 예측할 수 없습니다. 또한 오류 전에 추가 할 수있는 테이블 수의 차이는 아마도 문제가 기존 테이블 정의를 포함하는 컨텍스트를 업데이트하기 위해 생성되는 쿼리 크기와 새로운 테이블의 크기에있을 수 있습니다. 그것에 추가되고 있습니다. 기본적으로 SQL 쿼리가 너무 커지고 어떤 이유로 든 실행되지 않습니다.

모델을 생성하면 edmgen2 오류없이 작동하지만 생성 된 EDMX 파일은 위에서 언급 한 예외를 생성하지 않고도 Visual Studio 내에서 업데이트 할 수 없습니다.

모든 우연히이 문제의 원인은 edmgen2가 잘 작동한다는 점을 감안할 때 Visual Studio 내 도구에 있습니다. 그러나 다른 사람들 이이 독특한 문제에 접근하는 방법에 대한 조언을 제공 할 수 있기를 바라고 있습니다. 나는 그것을 경험하는 유일한 사람이 아닙니다.

동료가 제공 한 한 가지 제안은 일부 테이블 크로스 오버가있는 두 개의 개별 EBMX 파일을 유지하는 것이었지만 제 생각에는 꽤 추악한 수정처럼 보입니다. 나는 이것이 "새로운 기술"을 사용하려고 노력하는 것이라고 생각합니다. :(

도움이 되었습니까?

해결책

나는 오후 내내이 문제에 대해 두통을 겪었습니다. 그러나 EF Desinger 연결이 '기본 명령 타임 아웃 = 300000;'로 존재하는 app.config 또는 web.config에서 문을 추가 할 수있는 솔루션을 찾았습니다. 문제가 사라졌습니다.

다른 팁

위의 조언은 정확하지 않습니다.

Default Command Timeout 변경 해야하는 유일한 연결 문자열 매개 변수입니다. Connect Time 처음에 연결을 받기 위해 기다릴 시간을 규제합니다. 그것은 당신의 문제가 아닙니다.

Default Command Timeout Connector/Net 6.3.4와 연결 문자열에 영향을 미치지 않는 것으로 보입니다. 나는 이것이 커넥터/네트의 버그라고 생각하고 나는 버그 보고서 오라클과 함께. 편집 :이 버그는 MySQL 개발자에 의해 인정되었으며 2010 년 10 월 13 일 기준으로 수정되었습니다. 고정은 6.0.8, 6.1.6, 6.2.5 및 6.3.5로 배치되었습니다.

내가 이것을 둘러싼 유일한 방법은 ObjectContext 사물 CommandTimeout Null 이외의 다른 것에 대한 속성. NULL이라면 MSDN 당 "기본 제공 업체"의 값을 사용해야합니다. null이 아닌 경우 시간 초과 전에 몇 초 동안 권위있는 가치입니다.

예를 들어:

var context = new CitationData.de_rawEntities();
context.CommandTimeout = 180;

체크 아웃 :

http://efvote.wufoo.com/forms/ado-net-entity-framework-vote-of-o-confidence/

죄송합니다. 방금이 링크가 이미 게시되었다는 것을 깨달았습니다! 죄송합니다

또한 "동료가 제공 한 한 가지 제안은 일부 테이블 크로스 오버로 두 개의 개별 EBMX 파일을 유지하는 것이 었습니다"라고 생각합니다.

못 생겼지 만 작동해야합니다!

너희들은 문제를 쉽게 고치는 방법을 설명하지 않는 약이 약하다 :

  1. 모든 데이터 연결을 삭제하십시오
  2. 최신 MySQL 커넥터 (6.3.x) 다운로드
  3. Visual Studio 열기> 끊기 탐색기> 마우스 오른쪽 버튼을 클릭하십시오. "데이터 연결"> 연결 추가
  4. MySQL 데이터베이스 공급자를 선택하십시오
  5. 연결 세부 정보를 입력하십시오
  6. "Advance"를 클릭하십시오.
  7. Connect Time Out을 찾아 30,000과 같은 것으로 만드십시오.
  8. 기본 명령 타임 아웃을 찾아 30,000과 같은 것으로 만드십시오.

모든 것을 저장 한 다음 EF 모델을 다시 시도하고 업데이트하십시오. 나는 이것을 EF 4.0 및 VS2010으로 테스트하여 그것이 작동한다는 것을 알고 있습니다.

위의 모든 솔루션을 모두 사용하지 않았습니다. MySQL (6.3.6) 용 최신 .NET 커넥터를 다운로드했는데 문제가 사라졌습니다.

노력하다 MySQL 용 DotConnect ~와 함께 엔티티 개발자.
우리는 도구에서 모델 생성 프로세스를 약간 개선했습니다. ADO.NET 엔티티 프레임 워크 모델과 유사한 프로젝트에 DevArt 엔티티 모델을 추가 할 수 있지만 약간의 개선 사항이 있으며 타임 아웃 문제가 없습니다.

두 가지 가능성이 떠오르고 있습니다.

먼저 EF 버전 1 (.NET 3.5 SP 1과 함께 배송)이라는 것입니다. 보다 이것 그리고 이것.

다른 하나는 이것이 잘못된 유형의 통화가 사용 된 SQL Server와 Pre-ODBC 드라이버 (1991 년경)에서 얻은 것과 거의 같은 증상과 비슷하다는 것입니다. 한 종류는 쿼리 리턴 결과 (쿼리 리턴 결과)와 함께 사용됩니다 (select), 그리고 진술의 다른 것 - 결과를 반환하지 않음 (create table). 결국 연결은 선택 결과를 해당 쿼리와 일치 시키려고 노력하지 않도록 희망적으로 동기화되지 않았습니다. (그 당시에는 죽음의 블루 스크린 존재하지 않았다 : 컴퓨터는 대신 자발적으로 재부팅하는 경향이있다.)

테이블 생성, 생성 된 구조 확인, 새 열 추가, 행을 채우고, 채워진 후 행 내용을 확인하거나 검증 한 후 도구가 연결 모드를 혼동하는지 궁금합니다. 이것이 원인이라면, 일련의 연산에 대해 "더 순수한"상태로 피할 수 있습니다. 완전한 테이블을 만듭니다. alter table 새 열을 추가합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top