C # Entity Framework мы должны установить отношения, используя POCO.Id или просто POCO? - PullRequest
3 голосов
/ 14 июля 2011

У меня есть ситуация в методе обслуживания, когда назначение POCO в качестве дочернего объекта другого POCO не работает должным образом. Я использую Entity Framework 4.

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 будет устанавливать для order.CurrencyId и order.Currency значение NULL

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Более разумно использовать объект валюты, а не только Id, потому что при извлечении данных вы, скорее всего, захотите иметь свойство Currency, а не только Id.Когда вы создаете / обновляете, Id будет доступен в обоих сценариях.

0 голосов
/ 14 июля 2011

Я думаю, вам нужно прикрепить currency к цели ObjectContext.В этом случае вы увидите взаимосвязь между order и currency без кода выше.Считается, что заказ уже прикреплен к ObjectContext.

//if the context is the target `ObjectContext`, then
context.Currencies.Attach(currency);
...