35

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

最好不要使用属性。

4

3 回答 3

48

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

为了完成这项工作,我在我的键列中添加了 DatabaseGenerated 属性:

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

  // ...
}

希望这可以帮助某人。

于 2011-05-13T18:53:25.147 回答
33

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

modelBuilder
    .Entity<Foo>()
    .Property(f => f.Id)
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
于 2011-02-15T04:33:28.350 回答
12

小变化

public class User
{

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

  public int ID { get; set; }

  // Rest of the code
}
于 2011-08-31T17:36:01.057 回答