1

私は今週 Web API を使い始めたばかりで、非常に単純であるべきだと思うことに苦労していますが、まだ答えを見つけることができていません。おそらく、間違った用語を使用して検索しています。

API への呼び出しの 1 つは、GUID を通過します。(Entity Framework を使用して) 新しいエンティティを作成し、この新しく渡された GUID への関係の 1 つを設定する必要があります。この GUID は、データベース内の別のエンティティの ID です。

エンティティ全体をフェッチせずに、リレーションを介してエンティティをアタッチするのに苦労しています。

例えば、

public void DoWork(IList<Guid> userGuids)
{
     Order order = new Order() // This is an entity
     {
         CreateDate = DateTime.Now,
         CreatedBy = "Me",
         Items = (from i in this.Model.Items
                      where i.Id == userGuid
                      select i).ToList<Item>();
     }

     Model.Orders.Add(order);
     Model.SaveAll();
}

上記では、Item エンティティを Order にアタッチするためにデータベース呼び出しを行う必要があります。これを回避する方法はありませんか?ID のみが必要な場合に、エンティティ オブジェクト全体を取得するのは非常に冗長に思えます (いずれにせよ、既に取得しています!)。

4

1 に答える 1

2

ここで質問されているように、1 つの解決策はスタブ エンティティです: Create new EF object with foreign key reference without loading whole rereference object

参照されているソース ブログへのリンク: http://blogs.msdn.com/b/alexj/archive/2009/06/19/tip-26-how-to-avoid-database-queries-using-stub-entities.aspx

ブログから抜粋 - あなたの状況に適用する:

Category category = new Category { ID = 5};
ctx.AttachTo(“Categories”,category);

Product product = new Product {
 Name = “Bovril”,
 Category = category
};
ctx.AddToProducts(product);
ctx.SaveChanges();

このようにして (例では)、Category オブジェクトをロードすることなく Product が保存されます。

于 2013-01-29T18:15:00.097 に答える