Entity Framework: AttachAsModified ошибка / путаница :) - PullRequest
2 голосов
/ 27 августа 2009

Хорошо ... Я попробовал Google и не получил много хитов. Я не хочу оскорблять Так что это одно из лучших мест, где можно спросить, и EF плохо документирован.

Мой сбой, потому что GetOriginal () возвращает null в UpdateCmsProductCategory. Я предполагаю, что означает, что currentCmsProductCategory отсутствует в наборе изменений. Хорошо ... как мне положить его в набор изменений?

Вот последовательность ...

Я опускаю категорию CmsProduct поверх Wcf. Я делаю изменения. Я вызываю метод обновления Wcf ...

public void UpdateProductCategory(CmsProductCategory category)
{
    domainservice.UpdateCmsProductCategory(category);
}

Который вызывает метод доменного сервида ...

public virtual void UpdateCmsProductCategory(CmsProductCategory currentCmsProductCategory)
{
    this.Context.AttachAsModified(currentCmsProductCategory, 
        this.ChangeSet.GetOriginal(currentCmsProductCategory));
}

И это должно сработать - но нет, это исключение для меня, когда GetOriginal () не работает. Я чувствую, что пропускаю шаг между тем, когда код изменяет его, и передаю его в Wcf.

Есть ли намеки / указатели на хорошую документацию?

Спасибо!

1 Ответ

1 голос
/ 27 августа 2009

Ваша проблема, вероятно, в том, что вы теряете "контекст".

Когда вы делаете вызов для обновления «this.Context», это не то же самое, что тот, с которого вы его прочитали.

WCF имеет понятие «за вызов» и «за сеанс». По умолчанию используется "per call", поэтому вы получаете новый экземпляр службы домена. Вы можете решить эту проблему за сеанс.

Посмотрите по этой ссылке: http://msdn.microsoft.com/en-us/magazine/cc163590.aspx

Также попробуйте написать тест, чтобы убедиться, что то, что вы делаете, работает без передачи данных через wcf.

...