使用Entity Framework Code First CTP5,如何创建INT的主键列,而不是标识列

ajm*_*jma 33 entity-framework code-first entity-framework-ctp5

使用Entity Framework Code First CTP5,如何创建INT的主键列,而不是标识列

最好不要使用属性.

Jay*_*ido 45

这个答案对我不起作用(在EF 4.1中).

为了使这项工作,我将DatabaseGenerated属性添加到我的键列:

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

  // ...
}
Run Code Online (Sandbox Code Playgroud)

希望这有助于某人.

  • 只是为了添加这个东西在迁移的情况下不起作用你必须删除并创建db然后它可以工作流畅和注释案例 (2认同)

Mat*_*ton 30

如果使用fluent接口构建实体而不是使用属性上的属性,则可以使用DatabaseGenerationOption类(来自EntityFramework.dll,位于System.ComponentModel.DataAnnotations命名空间中).我没有测试过,但这就是它的样子:

modelBuilder
    .Entity<Foo>()
    .Property(f => f.Id)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
Run Code Online (Sandbox Code Playgroud)


ven*_*kat 11

小变化

public class User
{

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

  public int ID { get; set; }

  // Rest of the code
}
Run Code Online (Sandbox Code Playgroud)