Как вставить более одной строки в таблицу с помощью Entity Framework, если один столбец является внешним ключом? - PullRequest
0 голосов
/ 03 февраля 2011

Пожалуйста, помогите мне. Я не могу найти это нигде. Я хочу сделать это с помощью Entity Framework при вставке:

  • Добавить 1 строку в таблицу tParent
  • Добавить 4 строки в таблицу tChildren .

tChildren имеет столбец, который представляет собой FK tParent с именем ParentID.

Я на 4.0 рамки.

Ответы [ 2 ]

0 голосов
/ 04 февраля 2011

Вы должны будете добавить дочерние элементы к родителю, используя цикл, но вам нужно будет вызвать изменения сохранения один раз, что-то вроде следующего, скажем, родительский элемент - 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();
    }
0 голосов
/ 03 февраля 2011

Ключ в том, что у вас есть навигационные свойства , настроенные на объектах.

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...