6

내 모델의 필드 데이터 유형을 문자열에서 바이트 배열로 변경했으며 실행시이 오류가 발생했습니다. Update-Database 코드 첫 번째 이전 방법.코드 첫 번째 마이그레이션 오류 "데이터 유형 nvarchar (max)에서 varbinary (max) 로의 암시 적 변환이 허용되지 않습니다"

데이터 형식 nvarchar (max)에서 varbinary (max) 로의 암시 적 변환이 허용되지 않음 입니다. CONVERT 함수를 사용하여이 쿼리를 실행하십시오.

해결책은 무엇입니까? 그 당신이 데이터를 변환하는 것이 요구 있도록

감사

답변

13

SQL 서버는 직접 바이너리 문자열을 변경할 수 없습니다. 코드 우선 마이그레이션에 대해, 내가 쓰는 대신 수동 DbMigration에서 AlterColumn 문을 삭제하고 다음과 같습니다

AddColumn("dbo.TableName", "ColumnNameTmp", c => c.Binary()); 
Sql("Update dbo.TableName SET ColumnNameTmp = Convert(varbinary, ColumnName)"); 
DropColumn("dbo.TableName", "ColumnName"); 
RenameColumn("dbo.TableName", "ColumnNameTmp", "ColumnName") 

그리고 아래 방법에 반대를 원하는 경우. (위의 의사 코드는 구문 오류를 용서하십시오.)

+0

나는 그것을 얻지 못했습니다. ColumnName에서

+0

Convert (varbinary, ColumnName) 가능성이 ... 기존 데이터로 무엇을하고 있는지에 따라 다릅니다. – DanS

+0

convert 문에 행운이 있습니까? – DanS