entity framework代码首先使用一列作为主键,另一列作为自动增量列

我有一个名为Sale的课程

public class Sale { public int Id { get; set; } public string TrNo { get; set; } public DateTime Date { get; set; } public int CustomerID { get; set; } public ObservableCollection SaleDetails { get; set; } } 

在数据库中,我想将Id作为Auto Increment列,将TrNo作为Primary Key列。

请先告诉我如何使用EF5代码执行此操作。

谢谢。

您也可以使用数据注释执行此操作:

 public class Sale { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } [Key] public string TrNo { get; set; } public DateTime Date { get; set; } public int CustomerID { get; set; } public ObservableCollection SaleDetails { get; set; } } 

我相信你可以使用Fluent API来做到这一点

 protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); modelBuilder.Entity().Property(a => a.TrNo).HasKey(b => b.TrNo); } 

显然@ IronMan84的答案是正确的。 但它对我不起作用。 我略微修改它以应用我的另一个条件。 它奏效了。 我什么也没做。

这是我的解决方案。

 public class Sale { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } [Key, Column(TypeName = "varchar"), MaxLength(50)] public string TrNo { get; set; } public DateTime Date { get; set; } public int CustomerID { get; set; } public ObservableCollection SaleDetails { get; set; } } 

不幸的是,我无法将@ IronMan84的答案作为正确答案,因为它对我不起作用。

这对我有所帮助。 希望这能帮助仍在环顾四周的其他人

 public class Sale { [DatabaseGenerated(DatabaseGeneratedOption.Identity)]//switch on autogenerated public int Id { get; set; } [Key]//set as Primary key [DatabaseGenerated(DatabaseGeneratedOption.None)]// switch off autogenerated PK public string TrNo { get; set; } public DateTime Date { get; set; } public int CustomerID { get; set; } public ObservableCollection SaleDetails { get; set; } }