2009-07-21 10 views
6

私のテーブルの構造は、このベストプラクティス/方法

Orders 
------ 
Id int identity 
OrderDate smalldatetime 
OrderStatusid tinyint 

Products 
-------- 
Id int identity 
Name varchar(50) 

OrderDetails 
------------ 
Id int identity 
OrderId int (fkey) 
ProductId int (fkey) 
Amount decimal 
Rate decimal 

である私は
以下のコードを使用してEntity Frameworkのを使用して挿入操作にしようとしていますこれが最善の方法です挿入物をするには?
私はコンテキストオブジェクトから完全な製品アイテムを取得する代わりに、単純なPRODUCTID値

using (MyContextEntities ctx = new MyContextEntities()) 
{ 
    Orders newOrder = new Orders() 
    { 
    Name = "Gayle Wynand", 
    OrderDate = DateTime.Now, 
    IsComplete = true, 
    Comments = "test", 
    OrderStatusId = 2, 
    IsActive = true 
    }; 
    OrderDetails ode = new OrderDetails(); 
    ode.Products = ctx.Products.First(p => p.Id == 2); // any other way? 
    ode.Quantity = 2; 
    ode.Rate = 5.2; 
    newOrder.OrderDetails.Add(ode); 

    OrderDetails ode2 = new OrderDetails(); 
    ode2.Products = ctx.Products.First(p => p.Id == 3); // any other way? 
    ode2.Quantity = 3; 
    ode2.Rate =6.5; 
    newOrder.OrderDetails.Add(ode2); 


    ctx.AddToOrders(newOrder); 
    ctx.SaveChanges(); 
} 

を割り当てることができるというのですな方法で満足していないが、これはマスター・ディテールを行うための正しい方法です挿入するか、より良い/別の方法があります。

+0

'AddTo ' ...ありがとう! – nrod

答えて

2

あなたが今やっていることはうまくいくはずです。

あなたは、あなたが次の代替を使用することができ、ode.Productsを割り当てるときにデータベースクエリを行うことを避けるしたい場合:

// substitute your actual qualified entity set name 
ode.ProductsReference.EntityKey = 
    new EntityKey("MyEntities.ProductsEntitySetName", "Id", 2); 

これは速いが、あまり読みやすいです。また、Loadするまで、Productsプロパティはnullになります。しかし、挿入物の場合、これはしばしばOKです。

+0

マスターディテールデータを更新するためのショートカットはありますか? –

+0

あなたは何を意味するのか分かりません。どのようなショートカットを期待していますか?あなたのニーズをより具体的にすることができますか? –

+0

上記の操作と同じ操作を、更新操作でどのように行うのかを知りたいと思っていました。 –

1

別のアプローチは、スタブはPOCOで動作するこのコードは、将来においてもオブジェクト追加ボーナスとして、すなわち

var product = new Product {ID = 2}; 
ctx.AttachTo("Products", product); 
ode.Product = product; 

等EntityKeysではなく、オブジェクトを使用することであろう。

このテクニックの詳細については、this blog postを参照してください。

+0

私はこれを最初に試してみたところ、ctx.SaveChanges()を呼び出すと、製品 –

関連する問題