2012-07-02 2 views
0

Если у меня есть основная таблица, скажем, заказы, а подтаблица элементов и таблица элементов имеют поля для номера позиции, но она также имеет значение с нулевым значением (необязательно) поле для цвета, которое применяется только к определенным элементам. Как обновить таблицу элементов, в то же время, что и таблица заказов, используя Entity Framework?Entity Framework, один-ко-многим, несколько столбцов

Вот пример кода, который у меня есть до сих пор. Две проблемы, я только вхожу в один из моих предметов и, как показывает мое исследование, я не могу добавить другое поле в таблицу элементов?

foreach (Guid c in AllItems) 
    { Items.OrderItemID = Guid.NewGuid(); 
     ITemsOrderID = order.OrderID; 
     ITems.ItemID = c; 
     If (ItemID = ItemThatLetsYouChoseAColorID) 
     { 
      Items.ItemColorID = ColorID; 
     } else { 
      Items.ItemColorID = null; 
     } 
    } 
    context.Orders.AddObject(Orders); 
    context.Items.AddObject(Items); 
    context.SaveChanges(); 

В таблице «Мои заказы» вставлена ​​запись, и элементы получают одну запись. Боюсь, я пропустил что-то основное. Кстати, это Entity Framework 4.0, который. Я считаю, не требует использования EntityKey.

ответ

1

Вы добавляете объект в коллекцию Items только один раз после действия вашего foreach.

Вы проверили что-то вроде:

foreach (Guid c in AllItems) 
{ 
    var Item = new Item(); 

    Item.OrderItemID = Guid.NewGuid(); 
    Item.OrderID = order.OrderID; 
    Item.ItemID = c; 
    If (ItemID = ItemThatLetsYouChoseAColorID) 
    { 
     Item.ItemColorID = ColorID; 
    } 
    else 
    { 
     Item.ItemColorID = null; 
    } 

    context.Items.AddObject(Items); 
} 

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

И я не уверен, чтобы понять, что вы имеете в виду

Я не могу добавить еще одно поле в таблице пунктов

Вы должны быть более точными о том, что вы действительно ожидаете. Вставьте строку, добавьте столбец в таблицу ...? Что такое «поле»?

+0

Спасибо за ваш ответ. Я хочу вставить одну строку в Orders и много строк в Items. Я попробовал то, что вы предложили выше, но вставляет только последний элемент в таблицу Items. т.е. AddObject (Item) не вставляет каждый элемент, а только последний. – Jazzy

+0

В повторном чтении вашего ответа я вижу, что ваше первое предложение касалось моей проблемы. Поэтому вы ответили на мой вопрос. – Jazzy

0

Вот рабочий код. У меня появился новый элемент вне цикла элемента foreach, поэтому он переписывал значение. Кроме того, мне нужно добавить каждый из них в контекст. Мне было трудно с этим, надеюсь, это поможет кому-то еще:

<-fill the order object-> 
    foreach (Guid i in Items) 
    { 
     **Items item = new Items();** 
     item.ItemID = Guid.NewGuid(); 
     item.OrderID = order.OrderID; 
     if (i == ItemWithColorGuid) 
     { 
      foreach (Guid c in Colors) 
      { 
       **Items color = new Items();** 
       color.ItemsID = Guid.NewGuid(); 
       color.OrderID = order.orderID; 
       color.itemID = g; 
       color.colorID = c; 
       context.item.AddObject(color); 
      } 
     } 
     else 
     { 
      item.ItemID = i; 
      item.ColorID = null; 
      context.item.AddObject(item); 
     }       
    } 
    context.orders.AddObject(order); 
    context.SaveChanges(); 
Смежные вопросы