0

メインテーブル、たとえば注文、アイテムのサブテーブルがあり、アイテムテーブルにアイテム番号のフィールドがある場合、特定のアイテムにのみ適用される色のnull許容(オプション)フィールドもあります。Entity Frameworkを使用して、ordersテーブルと同時にitemsテーブルを更新するにはどうすればよいですか?

これが私がこれまでに持っているもののコード例です。2つの問題、私は自分のアイテムの1つだけを入力していることと、私の調査が示していることから、アイテムテーブルに別のフィールドを追加できないことです。

    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();

My Ordersテーブルにはレコードが挿入され、Itemsには1つのレコードが挿入されます。私はここで基本的な何かが欠けています、私は恐れています。ところで、これはEntityFramework4.0です。EntityKeyを使用する必要はないと思います。

4

2 に答える 2

1

Itemsのスコープの後で1回だけコレクションにオブジェクトを追加します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();

そして、私はあなたが何を意味するのか理解できません

アイテムテーブルに別のフィールドを追加できません

実際に何を期待するかについて、より正確にする必要があります。行を挿入し、テーブルに列を追加します...?「フィールド」とは何ですか?

于 2012-07-02T15:09:42.860 に答える
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();
于 2012-07-02T19:52:21.970 に答える