Entity Framework 7에서 속성 Attribute가 코드에서 먼저 인덱스를 생성합니까?

data-annotations entity-framework-core

문제

Entity Framework 7 (7.0.0-rc1-final)에서 속성 속성이 인덱스를 생성합니까?

나는 일반적으로 SQL 테이블에 색인을 추가하여 조회 시간을 개선하므로 내 클래스에서이를 지정해야한다고 가정합니다.

public class Account
{
  [Key]
  [Required]
  public int AccountId { get; set; }

  [Required] <-- How do I make this an Index in Sql Server?
  public int ApplicationUserId { get; set; }
}

나는 [색인]이 그것을 할 것이라고 추측하지만 이것은 인정되지 않습니다.

ApplicationUserId 열을 어떻게 인덱스합니까?

수락 된 답변

유창한 API를 DbContext 클래스에서 사용하십시오.

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Account>()
            .HasIndex(b => b.ApplicationUserId);
    }

인기 답변

해결 방법은 다음과 같습니다.

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field)]
    public class IndexAttribute : Attribute
    {
    }

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
foreach (var entity in modelBuilder.Model.GetEntityTypes())
            {
                foreach (var property in entity.GetProperties())
                {
                    if (property.PropertyInfo != null && property.PropertyInfo.GetCustomAttributes<IndexAttribute>().Any())
                    {
                        entity.AddIndex(new[] { property });
                    }
                }
            }
    }



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