EF外键惯例
1、<导航属性名称><主体主键属性名称>

[Table("Order")] public partial class Order { // 主键 public int OrderId { get; set; } public DateTime OrderDate { get; set; } // 导航属性 public virtual ICollection<OrderDetail> OrderDetails { get; set; } } [Table("OrderDetail")] public partial class OrderDetail { // 主键 public int Id { get; set; } public string ProductName { get; set; } public int Quantity { get; set; } public int Price { get; set; } // 导览属性 public virtual Order Order { get; set; } }
Order_OrderId
2、<主体类名称><主键属性名称>
// OrderDetail [Table("OrderDetail")] public partial class OrderDetail { // 主键 public int Id { get; set; } public string ProductName { get; set; } public int Quantity { get; set; } public int Price { get; set; } public int OrderId { get; set; } // 导览属性 public virtual Order Order { get; set; } }
OrderId
3、主体主键属性名称:Id。(一对一好像这样的)
4、导航属性[ForeignKey("XOrderId")]覆盖
[Table("OrderDetail")] public partial class OrderDetail { // 主键 public int Id { get; set; } public string ProductName { get; set; } public int Quantity { get; set; } public int Price { get; set; } public int OOrderId { get; set; } // 导览属性 [ForeignKey("OOrderId")] public virtual Order Order { get; set; } }
5、Fluent API覆盖
// OrderDetail [Table("OrderDetail")] public partial class OrderDetail { // 主键 public int Id { get; set; } public string ProductName { get; set; } public int Quantity { get; set; } public int Price { get; set; } public int OOrderId { get; set; } // 导览属性 public virtual Order Order { get; set; } }
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<OrderDetail>().HasRequired(od => od.Order).WithMany(o => o.OrderDetails).HasForeignKey(od => od.OOrderId); }