Entity Framework 6 마이그레이션을 사용하여 인덱스 만들기

ef-code-first entity-framework entity-framework-6 indexing sql-server-2012

문제

인덱스가 있어야하는 경우 Entity Framework 코드 첫 번째 마이그레이션을 사용하여 MS SQL Server 데이터베이스에서 인덱스를 만드는 방법이 있습니까?

  • 적어도 하나의 열에 의해 내림차순
  • 다른 컬럼 포함
?

다음과 같은 것을 만들어 내야한다.

CREATE NONCLUSTERED INDEX [IX_IndexName] ON [dbo].[TableName]
(
    [Column1] ASC,
    [Column2] DESC
)
INCLUDE ([Column3], [Column4])

이 주제에 관한 기사 를 찾았지만 상당히 번거로운 솔루션을 제공합니다. 아마도 기사가 쓰여진 이후로 무언가가 향상되었을 것입니다.

마이 그 레이션이 임의의 SQL 코드를 실행할 수있는 능력을 알고 있지만 실제로 SQL 코드를 직접 쓰는 대신 저를 위해 모든 더러운 작업을 수행하는 CreateIndex 메소드의 일부 버전을 사용할 수 있기를 원합니다.

인기 답변

이제 막 동일한 문제가 발생했으며 현재로서는 마이그레이션 API의 일부가 아닌 것으로 보입니다. 내 해결 방법은 위로 마이그레이션을 위해 sql을 실행하고 아래로 마이그레이션을 위해 DropIndex 메서드를 사용하는 것이 었습니다.

public override void Up()
{
    Sql("CREATE NONCLUSTERED INDEX IX_IndexName ON TableName ([Column1], [Column2] DESC) INCLUDE ([Column3], [Column4])");
}

public override void Down()
{
    DropIndex("TableName", "IX_IndexName");
}

그것은 예쁘지 않고 재사용 가능한 방법 / 확장 등으로 정돈 될 수 있지만 일을합니다.



Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow