代码之家  ›  专栏  ›  技术社区  ›  JadedEric

EF实体上的数据注释突然停止工作

  •  0
  • JadedEric  · 技术社区  · 7 年前

    我继承了一个web应用程序,用于定义实体之间关系的数据注释突然停止工作。

    我尝试了各种各样的事情,我不明白为什么希望这里的人能指出这个问题。

    • 顺序
    • 订单输入

    的实体 顺序

    [Table("order")]
    public class Order
    {
        [Column("id")]
        public int Id { get; set; }
    
        public virtual ICollection<OrderEntry> OrderEntries { get; set; }
    
        [ForeignKey("Id")]
        public virtual OrderClient OrderClients { get; set; }
    
        public Order()
        {
            OrderEntries = new HashSet<OrderEntry>();
        }
    }
    

    没什么特别的。一个订单可以包含多个条目,但一个订单只能有一个客户机。

    订单输入 看起来像这样:

    [Table("order_entry")]
    public class OrderEntry
    {
        [Column("id")]
        public int Id { get; set; }
    
        [Column("order_id")]
        public int OrderId { get; set; }
    
        [ForeignKey("OrderId")]
        public virtual Order Order { get; set; }
    }
    

    OrderEntries运行良好,我们可以做一些基本的工作,包括但不存在问题:

    ctx.Orders.Include(x => x.OrderEntries).ToList();
    

    order\u客户端 表,在与顺序的多对一关系中。

    这个 order\u客户端 实体:

    [Table("order_client")]
    public class OrderClient
    {
        [Column("id")]
        public int Id { get; set; }
    
        [Column("order_id")]
        public int OrderId { get; set; }
    
        public virtual ICollection<Order> Orders { get; set; }
    
        public OrderClient()
        {
            Orders = new HashSet<Order>();
        }
    }
    

    [ForeignKey(“OrderId”)]

    [反向属性(“订单”)]

    顺序

    我在这里完全被难住了。不幸的是,我们无法将应用程序的当前实例移动到fluent API,因为更改影响超过了SLA协议,因此我们需要解决当前问题。

    任何想法都会受到欢迎。

    原始开发人员错误地创建了客户-订单关系。他说一个订单可以有多个客户,例如一个客户有多个订单。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Dalvinder Singh    7 年前

    我认为你缺少关系的概念。 你可以在这里找到帮助。试着做一次,你就会做完。 http://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx