Используя Entity Framework Code First CTP5, как мне создать столбец первичного ключа, который представляет собой INT, а не столбцы идентификаторов - PullRequest
32 голосов
/ 15 февраля 2011

Используя Entity Framework Code First CTP5, как мне создать столбец первичного ключа, который является INT и не является столбцами идентификаторов

Предпочтительно не использовать атрибуты.

Ответы [ 3 ]

45 голосов
/ 13 мая 2011

Этот ответ не работал для меня (в EF 4.1).

Чтобы сделать эту работу, я добавил атрибут DatabaseGenerated в свой ключевой столбец:

public class FacebookUser
{
  [Key]
  [DatabaseGenerated(DatabaseGeneratedOption.None)]
  public long FacebookId { get; set; }

  // ...
}

Надеюсь, это кому-нибудь поможет.

29 голосов
/ 15 февраля 2011

Если вы строите свои сущности, используя свободный интерфейс, а не атрибуты поверх свойств, вы можете использовать класс DatabaseGenerationOption (из EntityFramework.dll в пространстве имен System.ComponentModel.DataAnnotations). Я не проверял это, но вот как это будет выглядеть:

modelBuilder
    .Entity<Foo>()
    .Property(f => f.Id)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
11 голосов
/ 31 августа 2011

Небольшое изменение

public class User
{

  [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)]

  public int ID { get; set; }

  // Rest of the code
}
...