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; }
    }
View Code

 

 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);
        }

 

posted @ 2022-04-02 13:35  江境纣州  阅读(62)  评论(0编辑  收藏  举报