2

好的...我尝试了谷歌并没有得到很多点击。我不想滥用所以,但这是最好的地方之一,而且 EF 没有很好的记录。

我的失败是因为 GetOriginal() 在 UpdateCmsProductCategory 中返回 null。我假设这意味着 currentCmsProductCategory 不在 ChangeSet 中。好的...我如何将它放入变更集中?

这是顺序...

我将 CmsProductCategory 拉到 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 之间我错过了一个步骤。

任何提示/指向好的文档?

谢谢!

4

1 回答 1

1

您的问题可能是您丢失了“上下文”。

当您调用更新“this.Context”时,它与您从中读取的不同。

WCF 有“每次调用”和“每次会话”的概念。“每次调用”是默认设置,因此您将获得域服务的新实例。您可以使用每个会话来解决它。

看看这个链接:http: //msdn.microsoft.com/en-us/magazine/cc163590.aspx

还可以尝试编写一个测试来检查您正在做的事情,而无需通过 wcf 传输数据。

于 2009-08-27T18:04:15.960 回答