Entity Framework 7에서 키 ID 열을 구성하는 방법

entity-framework-core

문제

Entity Framework 7 RC1 에 다음 Mapper가 있습니다.

  b.ToTable("Categories");
  b.HasKey(x => x.Id);
  b.Property(x => x.Id) ... ??

EF 7 RC1에서 ID 및 ID 열을 만드는 방법은 무엇입니까?

SQL에 상응하는 내용은 다음과 같습니다.

  b.ToTable("Categories");
  b.HasKey(x => x.Id);
  b.Property(x => x.Id) ... ??

나는 이것을 다음과 같이 읽었습니다.

  b.ToTable("Categories");
  b.HasKey(x => x.Id);
  b.Property(x => x.Id) ... ??

하지만 EF7 RC1에서 ForSqlServer ()를 찾지 못했습니다. 나는 찾는다 :

  b.ToTable("Categories");
  b.HasKey(x => x.Id);
  b.Property(x => x.Id) ... ??

수락 된 답변

호출하여 신원 열을 명시 적으로 구성 할 수 있습니다.

b.Property(x => x.Id).UseSqlServerIdentityColumn();

또한 유의할 점은 identity는 기본 키와 함께 사용되는 기본 값 생성 패턴입니다. 시퀀스를 사용하는 것은 옵트 인입니다.


인기 답변

natemcmaster 가 제공 한 이 맞습니다. FluentAPI로 정의하거나 데이터 주석 [Key] 를 사용하여 기본 키를 정의 할 수 있습니다.

그러나 EF 코어에서 신원 값을 정의하는 몇 가지 방법이 있습니다. ID (기본값), 시퀀스 및 HiLo 패턴을 시퀀스와 함께 사용할 수 있습니다. ID는 기본값입니다. 사실 id 또는 <typeName> Id로 끝나는 속성 이름 인 경우 ID 열로 정의 할 필요가 없습니다. 규칙에 따라 EF 코어는 Id 또는 <typeName> Id라는 속성을 엔티티의 키로 구성합니다.

ForSqlServer 에서 확장 메서드 이름을 시작하는 이유는 EF Core가 많은 데이터베이스 공급자를 지원하기 때문입니다. 그리고 이러한 공급자에 대한 기능이 약간 다르므로 사용중인 공급자에 따라 동일한 속성에 대해 다른 동작을 지정할 수 있습니다.

EF 코어함께 Sequence를 사용 하고 EF 코어함께 HiLo를 사용하는 방법에 대해 더 알고 싶다면이 기사를 읽으십시오.




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