是否有可能获得下一个要创建的实体主键的值?在它创建之前?
我试过了:
Order newOrder = new Order();
MessageBox.Show(newOrder.orderId.toString());
显示0。
有可能吗?
更大的图片:
我正在努力建立一个快餐订单管理系统。我有Order
,Item
和OrderItem
个表格。 Order
和Item
之间存在多对多关系,OrderItem
表可以解决这种关系。
因此,在添加订单时,我需要添加OrderItem
s,其orderId
字段应由刚创建的'Order'填充,即尚未创建。
编辑:我使用Code-First方法。
答案 0 :(得分:2)
因此,如果您拥有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();
一切顺利,相应的密钥填充。