2009-09-22 5 views
9

이 질문은 해결책이 아니기 때문에 사과하는 편이 좋습니다.하지만 답을 찾기 위해 많은 검색이 필요했기 때문에 Google은별로 도움이되지 않았습니다. 미래의 Google 직원을 돕기 위해 오류와 해결책을 제공함으로써 커뮤니티에 뭔가를 돌려주고 싶었습니다.SQL 서버의 NText, 텍스트 및 이미지와 관련된 LINQ 문제

LINQ to SQL을 사용할 때 데이터 테이블에 변경 사항 (두 번째)을 제출할 때 문제가 발생했습니다. 나는 모두가 OK 인 변화를 제출 처음으로, 두 번째는 내가 말했다 SQL 예외 받았다 변경 제출 : 내가 SubmitChanges()를 호출 할 때

"The text, ntext, and image data types cannot be compared or sorted, 
except when using IS NULL or LIKE operator" 

예외가 발생했습니다,하지만 때문에 게으른로드 LINQ는 실제로 Refresh (RefreshMode.KeepCurrentValues, myObject)를 호출 할 때 이전 줄에서 발생했습니다.

답변

10

문제는 새로 고침 모드가 모든 필드의 데이터베이스 버전과 현재를 비교하려고 시도하는 것이고 SQL은 해당 종류의 비교 텍스트, ntext 및 image 열을 지원하지 않습니다 (적어도 SQL Server 2000은 아님).).

이 솔루션은 열 정의

UpdateCheck = UpdateCheck.Never 

예에 다음 속성을 추가하는 것입니다

[Column(DbType = "NText", CanBeNull = true, UpdateCheck = UpdateCheck.Never)] 

그런 다음 새로 고침 모드가 작동하고 SubmitChanges에 추가 문제가 없습니다.

+1

또는 SQL Server 2005 이상인 경우 해당 데이터 형식을 그대로두고 되돌아 보지 마십시오. IMAGE 대신 N (N) TEXT 및 VARBINARY (MAX) 대신 VARCHAR (MAX)를 사용하십시오. –

+0

아, 나는 Sql Server 2005 (또는 심지어 더 현대적인 것)로 모든 것을 업그레이드 할 수있을 것을 갈망합니다. 불행히도 forgoingable 미래를 위해 SQL Server 2000에 여전히 붙어 있습니다! –

+0

문제를 해결할 때 답으로 표시해야합니다. –

관련 문제