【问题标题】:Saving complex view model using Entity Framework 4.3使用 Entity Framework 4.3 保存复杂的视图模型
【发布时间】:2012-05-22 19:00:13
【问题描述】:

我有 Customer、Order 和 OrderItem 表。 OrderItem.OrderID 指向 Order.ID;并且 Order.CustomerID 指向 Customer.ID,即常见的 Customer -> Order -> OrderItem 设置。

我有一个视图模型 – Customer,其中包含 Order 对象和 OrderItem 对象。

如果用户在视图上创建了一个新的客户、新的订单和新的 OrderItems,然后将它们绑定到客户视图模型对象(包含所有客户、订单、订单项数据);有没有办法使用 EF 保存这个客户视图模型?

我的困惑来自这样一个事实,因为 Customer、Order、OrderItem(s) 都是新记录;这意味着尚未生成 Customer.ID(自动递增的数字)(尚未保存记录);那么EF如何知道保存Order.CustomerID时使用什么ID呢?

我是否需要先保存客户,获取 Customer.ID,然后保存 Order,然后获取 Order.ID,然后保存 OrderItem(s)?

谢谢。

【问题讨论】:

    标签: asp.net-mvc-3 entity-framework-4.3


    【解决方案1】:

    你就这么称呼吧:

    context.Customers.Add(customer);
    context.SaveChanges();
    

    如果您的映射中的所有内容都正确配置,EF 将首先了解关系并正确保存客户,检索其 Id 并将其用于保存相关订单。它将以相同的方式处理订单项目。

    【讨论】:

      【解决方案2】:

      只要在保存之前建立对象关系就可以了

      customer.Orders = new List<Orders>();
      customer.Orders.Add(order);
      
      order.OrderItems = new List<OrderItems>();
      order.OrderItems.Add(orderItem);
      
      context.Customer.Add(customer);
      context.SaveChanges();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-01
        • 2013-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多