如何获取要在DbContext c中创建的下一个实体的主键(id)#

时间:2015-05-03 15:10:53

标签: c# .net entity-framework ef-code-first dbcontext

是否有可能获得下一个要创建的实体主键的值?在它创建之前?

我试过了:

Order newOrder = new Order();
MessageBox.Show(newOrder.orderId.toString());

显示0。

有可能吗?

更大的图片:

我正在努力建立一个快餐订单管理系统。我有OrderItemOrderItem个表格。 OrderItem之间存在多对多关系,OrderItem表可以解决这种关系。

因此,在添加订单时,我需要添加OrderItem s,其orderId字段应由刚创建的'Order'填充,即尚未创建。

编辑:我使用Code-First方法。

1 个答案:

答案 0 :(得分:2)

EF会照顾它。

因此,如果您拥有Code First,您可以执行以下操作:

class Order
{
   [Key]
   public int Id { get; set }

   public virtual List<OrderItem> Items { get; set; }

   public Order()
   {
     Items = new List<OrderItem>();
   }
}

class OrderItem
{
   [Key]
   public int Id { get; set; }

   public string ItemName { get; set; } //of course just a demo property
}

并执行以下操作:

Order order = new Order()

OrderItem item = new OrderItem();
item.ItemName = "Super Burger";

order.Items.Add( item );

context.Orders.Add( order );
context.SaveChanges();

一切顺利,相应的密钥填充。