Как настроить столбец «Идентификация» в Entity Framework 7?

entity-framework-core

Вопрос

У меня есть следующий Mapper в Entity Framework 7 RC1 :

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

Как сделать столбец идентификатора и идентификатора в EF 7 RC1?

Эквивалент SQL:

Id int identity not null

Я читал, что это будет так:

b.Property(x => x.Id).ForSqlServer().UseIdentity();

Но в EF7 RC1 я не нашел ForSqlServer (). Я нахожу:

.ForSqlServerHasComputedSql()
.ForSqlServerHasColumnName()
.ForSqlServerHasColumnNameType()
.ForSqlServerHasDefaultValue()
.ForSqlServerHasDefaultValueSql()
.ForSqlServerUseSequenceHiLo()
...

Принятый ответ

Вы можете явно настроить столбец идентификатора, вызвав его.

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

Также стоит отметить: идентификация - это шаблон генерации значений по умолчанию, используемый с первичными ключами. Использование последовательностей - это выбор.


Популярные ответы

Ответ, предоставленный natemcmaster , верен. Вы можете определить с помощью fluentAPI, или вы также можете использовать Data Annotation [Key] для определения Первичного ключа.

Однако есть несколько способов определить значение идентификатора в EF Core. Вы можете использовать идентификатор (по умолчанию), последовательность и шаблон HiLo с последовательностью. Идентификатор по умолчанию. На самом деле вам не нужно определять его как столбец идентификатора, если ваше имя свойства заканчивается идентификатором Id или <typeName> Id. EF Core по соглашению конфигурирует свойство Id или <typeName> Id в качестве ключа объекта.

И причина наличия имени метода расширения, начиная с ForSqlServer заключается в том, что EF Core поддерживает множество поставщиков баз данных. И функциональность для этих поставщиков несколько отличается, поэтому вы можете указать другое поведение для одного и того же свойства в зависимости от используемого провайдера.

Пожалуйста, прочитайте эту статью, чтобы узнать больше об использовании Sequence с EF Core и HiLo с ядром EF .



Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему