2011-07-13 4 views
3

私は、別のPOCOの子オブジェクトとしてPOCOを割り当てることが期待どおりに機能しないサービスメソッドの状況があります。私はEntity Framework 4を使用しています。C#Entity Frameworkでは、POCO.IdまたはPOCOを使用して関係を設定する必要がありますか?

public void ChangeOrderCurrency(Currency currency) 
{ 
    order.CurrencyId = currency.Id; 
    order.Currency = currency; 
    // other stuff related to exchange rates etc 
} 

関係を設定する方が正しいでしょうか? order.CurrencyId = currency.Idまたはorder.Currency = currency?時折、すべてのユニットテストに合格し、この現在のコードで

、ラインorder.Currency = currencyは、私はあなたがターゲットObjectContextcurrencyを添付する必要があると思う

答えて

1

は、それはあなたのデータを取得するとき、あなたが最も可能性の高い通貨プロパティだけでなく、IDを持つことになるでしょうので、通貨のオブジェクトだけではなく、IDを使用する方が理にかなっています。作成/更新すると、どちらのシナリオでもIDを利用できるようになります。

0

をNULLにorder.CurrencyIdとorder.Currencyの両方を設定します。その場合は、ordercurrencyの間に上記のコードは含まれていません。 ObjectContextに既に注文が添付されているとみなされます。

//if the context is the target `ObjectContext`, then 
context.Currencies.Attach(currency); 
関連する問題