我有一个名为 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<SaleDetail> SaleDetails { get; set; }
}
在数据库中,我希望Id
为Auto Increment
列,TrNo
为Primary Key
列。
请先告诉我如何使用EF5代码执行此操作。
感谢。
答案 0 :(得分:44)
您也可以使用数据注释执行此操作:
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<SaleDetail> SaleDetails { get; set; }
}
答案 1 :(得分:17)
我相信您可以使用Fluent API执行此操作
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Sale>().Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<Sale>().Property(a => a.TrNo).HasKey(b => b.TrNo);
}
答案 2 :(得分:5)
显然@ IronMan84的answer正确无误。但它对我不起作用。我略微修改它以应用我的另一个条件。它奏效了。我什么也没做。
这是我的解决方案。
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<SaleDetail> SaleDetails { get; set; }
}
不幸的是,我无法将@ IronMan84的答案作为正确答案,因为它对我不起作用。
答案 3 :(得分:2)
这对我有帮助。希望这能帮助仍在环顾四周的其他人
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<SaleDetail> SaleDetails { get; set; }
}