代码之家  ›  专栏  ›  技术社区  ›  John L.

实体框架关系修复失败

  •  0
  • John L.  · 技术社区  · 8 年前

    orderItem 具有 orderID=100 orderID 被称为关系修复。因此,我们不必提供 订单号 待补充。

            Entities ctx = new Entities();
    
            Order order = new Order()
            {
                ID = 100,
                name = "abc"
            };
    
            // ID field of OrderItem is auto-increment and the primary field
            //OrderItem is a navigation property of Order through the orderID field
            OrderItem orderItem = new OrderItem ()
            {
                name = "oi_abc"
            };
            order.OrderItems.Add(orderItem);
    
            ctx.Orders.Add(order);
            ctx.SaveChanges();
    

    这段示例代码按预期工作。但问题是,我们项目中的一段类似代码未能正确修复关系。(我知道如果我能提供完整的代码就最好了,但由于代码和数据库的其他复杂性以及我们公司的政策,这是不可能的。)

    我们项目中的代码只是设置 订单号 在提交期间将其设置为0。

    1. 我们不会在任何地方禁用跟踪上下文的更改
    2. 手动设置orderID可以工作,但我们不希望这样
    3. ctx.Orders.Add(order); 在创建 order 对象,则它将按预期工作。

    0 回复  |  直到 8 年前