2009-08-04 4 views
3

DB의 테이블에 새 NVARCHAR 열을 추가해야했습니다. 그래서 열을 추가 한 다음 Visual Studio를 실행하여 Entity Framework 용 EDMX 파일을 업데이트했습니다.DB 테이블에 열을 추가 한 후 Entity Framework 문제가 발생했습니다.

"데이터 판독기가 호환되지 않습니다"라는 오류 만 발생시키는 모든 것에 대해 데이터베이스에서 업데이트 모델을 실행했습니다. 그래서 DB에서 전체 테이블의 이름을 변경하고 데이터베이스에서 EDMX를 업데이트하고 테이블을 원래 이름으로 다시 이름을 변경하고 다시 업데이트를 실행 한 다음 영향을받는 모든 저장 프로 시저에 대해 새 함수 가져 오기를 만들었습니다. 하지만 난 여전히 같은 오류 얻을 : 나는 조금 주위를 검토 ​​한 결과

The data reader is incompatible with the specified '[Model].[Entity]'. A member of the type, '[Column]', does not have a corresponding column in the data reader with the same name.

을하고, 열 이름은 데이터베이스와 프레임 워크 다른 경우 이것은 일반적인 오류 것 같다. 그러나이 경우는 동일하지 않습니다.

[Entity] .Context. [Column]을 통해 코드의 열에 액세스 할 수 있으므로 데이터 판독기에서 불만 사항이 무엇인지 잘 알지 못합니다.

아이디어가 부족하여 도움을 환영합니다.

+0

이 테이블을 저장 프로 시저의 임시 테이블로 사용하고 있습니까? –

+1

아니요, 실제로 전체 데이터베이스에서 가장 많이 사용되는 테이블입니다. –

+0

저장 프로 시저를 실행할 때 또는 테이블에 대해 직접 linq 문을 실행할 때이 오류가 발생합니까? –

답변

0

EDMX는 좋았지 만 디자이너가 이상한 이유로 내 프로젝트에서 Designer.cs 업데이트를 중지했습니다.

들어가서 수동으로 편집해야했습니다.

+0

NO ... 이것은 끔찍한 ... 나는 그것을 삭제하고 DBEntities 연결 문자열과 readd .. 삭제 빠르고 .. 그리고 방탄 ... (지금까지?!) –

2

모델을 업데이트하면 저장소 스키마가 바뀌지 만 클라이언트 스키마 나 매핑은 바뀝니다. "깨끗한 슬레이트"로 시작하려면 현재 EDMX을 백업 한 다음 XML로 엽니 다. 테이블에 대한 모든 참조를 제거한 다음 그래픽 오류에서 닫고여십시오. 짓다. 오류 (삭제 된 테이블에 대한 깨진 링크)가 있으면 수정하십시오. 그런 다음 모델을 업데이트하여 테이블을 다시 추가하십시오.

+0

Jikes, 저 파일은 지뢰밭입니다! 게다가이 표는 다른 모든 표에서 편집되었습니다. 그래서 그 모든 표를 지워야한다는 뜻입니까? 정말로 수동으로 편집해야한다고 말해야합니다. 테이블에 간단한 열을 추가하는 EDMX 파일은 말도 안되는 것이 아닙니다. 그리고 나는 당신을 비판하는 것을 의미하지는 않습니다, Craig. 엔티티 프레임 워크에서 심각한 결함입니다. –

+0

글쎄, 나는 3.5 SP1의 EF 디자이너 (EF 런타임과 구분되는)에는 많은 결함이 있지만 일반적으로 "테이블에 간단한 열을 추가하려면"이 작업을 수행하지 않아도됩니다. 모델을 삭제 한 다음 삭제하고 디자이너에게 다시 사각형을 가져오고 싶습니다. " –

+0

3.5 SP1보다 새로운 버전? –

0

내게 엔티티 (세로 엔티티 분할)가 변경되었지만 내 저장 프로 시저 중 하나가 해당 새 필드에 대한 데이터를 가져 오지 않는 문제였습니다. SP에 추가했는데 이제는 모든 것이 잘 돌아갑니다.

1

위와 동일한 문제가 발생했습니다. 엔티티를 edmx에서 제거하려고 시도하고, 함수 가져 오기를 제거하고 다시 추가하고, 마지막으로 함수 가져 오기에서 복잡한 유형을 사용하여 다시 작성했지만 그 중 하나도 작동하지 않았습니다.

이 오류는 실제로 불일치가있는 모든 시나리오에서 발생할 수 있지만 함수 가져 오기에 사용 된 저장된 proc 파일에 문제가 있음을 알았습니다. 저장된 proc은 특정 select columnname, columnname 등을 사용하고 있으며 테이블에 추가 한 새 열은 해당 목록에 없습니다. 테스트를 위해 *를 사용하고 EDMX를 업데이트했으며 문제가 해결되었습니다.

1) Open Web.config, find <connectionStrings> node 
2) Delete the DBNameEntities <connectionStrings> 
    - this way you do not have to modify any references to your emdx model 
2) Delete the ADO.NET Entity Data Model (.emdx) 
3) Re-add the ADO.NET Entity Data Model (.emdx) with the same name. 

-

+0

+1 : 열을 선택하는 저장 프로 시저가 너무 많습니다. 하나씩 이름을 짓는 것이 내 문제였습니다. 이것은 sp를 엔티티에 바인드하고자 할 때마다'select * '를 사용해야합니다. – Ashkan

0

단순히 새로운 항목을 추가하지 않는 이상은,이 오류 I가 "데이터베이스의 업데이트 모델"을 시도 거의 모든 시간 ...

이 솔루션은 다행히 매우 간단을 던졌습니다 그것의 빠르고 방탄. (지금까지 !?)

0

DataModel을 다시 추가하면 모든 데이터 바인딩, 특히 양식의 컨트롤 바인딩 (예 : DbGrid)이 손실됩니다. 이 문제는 외부 편집기에서 DataModel.edmx 파일을 수동으로 편집하여 수정했습니다.

관련 문제