Как да конфигурирам колона Key Identity в Entity Framework 7?

Имам следния 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()
...

person Miguel Moura    schedule 16.12.2015    source източник


Отговори (2)


Можете изрично да конфигурирате колона за самоличност чрез извикване.

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

Също така си струва да се отбележи: идентичността е моделът за генериране на стойност по подразбиране, използван с първичните ключове. Използването на последователности е по желание.

person natemcmaster    schedule 17.12.2015
comment
Последователностите са алтернатива на идентичността. Вижте stackoverflow.com/questions/10062328/sequence-vs-identity. EF поддържа и двете, но по подразбиране е identity. - person natemcmaster; 18.12.2015

Отговорът, предоставен от natemcmaster, е правилен. Можете да дефинирате с fluentAPI или можете също да използвате Data Annotation [Key], за да дефинирате първичен ключ.

Въпреки това има няколко начина за дефиниране на стойност на идентичност в EF Core. Можете да използвате identity (по подразбиране), Sequence и HiLo Pattern с Sequence. Самоличността е по подразбиране. Всъщност не е нужно да го дефинирате като колона за идентичност, ако името на собствеността ви завършва с Id или ‹typeName› Id. EF Core по конвенция конфигурира свойство с име Id или ‹typeName›Id като ключ на обект.

И причината името на метода за разширение да започва от ForSqlServer е, че EF Core поддържа много доставчици на бази данни. Функционалността на тези доставчици е малко по-различна, така че можете да укажете различно поведение за едно и също свойство в зависимост от използвания доставчик.

Моля, прочетете тази статия, за да научите повече за използването на Последователност с EF Core и HiLo с EF ядро.

person VirendraJ    schedule 15.09.2016
comment
това е главно K, [Key] - person Serj Sagan; 24.10.2016