请帮帮我。我无处可寻。我想在插入时使用Entity框架执行此操作:
tChildren 的列为 tParent 的FK,名为 ParentID。
我在4.0框架上。
答案 0 :(得分:0)
关键是您在实体上设置了导航属性。
tParent
应该有一个名为tChildrens
的导航属性,(可选),tChildren
应该有一个名为tParent
的导航属性。
多重性应为tParent
1 .. * tChildren
。
考虑到这一点,这应该可以解决问题:
var parent = new tParent();
var child1 = new tChild();
var child2 = new tChild();
// set properties you need, etc etc
parent.tChildrens.Add(child1);
parent.tChildrens.Add(child2);
context.SaveChanges();
EF非常聪明,可以添加父项,获取标识,然后将FK设置的子项插入到刚刚创建的标识中。
HTH。
答案 1 :(得分:0)
您必须使用循环将子项添加到父项,但需要调用一次保存更改,如下所示,例如,父项是Order,子项称为OrderItem
public void AddOrder(OrderDto orderToAdd)
{
var newOrder = Order.CreateOrder(orderToAdd.OrderID, .....); //set all other non nullable attributes
neworder.OrderDate = orderToAdd.OrderDate;
//set other properties
'
'
//then add the order items to the newOrder
//note orderToAdd.OrderItemsDto is the ChildList
foreach (OrderItemDto o in orderToAdd.OrderItemsDto)
{
var orderItem = OrderItem.CreateOrderItem(orderToAdd.OrderID, o.OrderItemID); //set all other non nullable attributes
orderItem.OrderQuantity = o.OrderQuantity;
//set other properties
'
'
newOrder.OrderItems.Add(orderItem);
}
context.AddToOrders(newOrder);
context.SaveChanges();
}