Entity Framework 7에서 문자열 속성에 대한 인덱스를 만드는 방법

entity-framework-core visual-studio-2015

문제

Entity Framework 7에 대한 코드 첫 번째 모델을 만들려고합니다. 최근에 출시 된 Visual Studio 2015 Beta와 다음 버전의 EntityFramework 패키지 (내 project.json 파일의 스 니펫)를 사용하고 있습니다.

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

현재 데이터 주석을 사용할 수없는 것처럼 보입니다. OnModelCreating 재정의와 최근 구현 된 (부분적으로) 마이그레이션을 사용하여 내 모델을 생성하고 있습니다.

지금은 기본 키와 일대일 관계가 작동하며 정수 유형에 대한 색인을 생성합니다. 예 :

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

이 스 니펫을 사용하면 다음과 같은 마이그레이션 코드가 생성됩니다.

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

그러나 문자열 속성에 인덱스를 추가하려고하면 마이그레이션이 생성되지만 SQL Server에서 적용될 때 분명히 nvarchar (MAX) 인 열 유형으로 인해 거부됩니다. .Required().MaxLength(100) 처럼 보입니다 .Required().MaxLength(100) 는 제한된 문자열 열 유형 생성을 강제하지 않습니다. 그리고 열 유형을 변경하는 방법이 있지만 ModelBuilder를 통해 열 유형을 호출하는 방법을 찾지 못하는 것 같습니다.

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

결과 마이그레이션 :

"EntityFramework.SqlServer": "7.0.0-beta1",
"EntityFramework.Commands": "7.0.0-beta1",

EF7의 베타 버전에서 문자열 속성에 대한 색인을 만드는 방법이 있습니까?

수락 된 답변

불행하게도 (7.0.0-beta1), 사용할 최대 열 유형을 결정할 때 최대 길이 및 열 유형 메타 데이터가 적용되지 않습니다. 지금은 마이그레이션에서 원시 DDL로 드롭 다운해야합니다.

// Add before CreateIndex
migrationBuilder.Sql("ALTER TABLE [Keyword] ALTER COLUMN [Word] nvarchar(4000)");



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.