Silverlight 域服务-服务器端更新

Silverlight 域服务-服务器端更新,silverlight,entity-framework,entity-framework-4,domainservices,Silverlight,Entity Framework,Entity Framework 4,Domainservices,我有一个silverlight 4 RIA域服务。当然,在一种特殊的方法中,我需要更改数据库中的一个值。为此,我获取实体,更改一个值,然后我需要将更改保存回数据库 我尝试调用实体生成的更新函数,该函数只调用this.ObjectContext.myEntity.AttachAsModifiedmyENtity;但这些变化永远不会回到数据库 如何保存服务器端的值,即客户端从未有过此数据?您应该知道,UpdateXXX方法实际上并没有将更改提交到数据库,这只会在稍后发生。知道了这一点,我们可以更改U

我有一个silverlight 4 RIA域服务。当然,在一种特殊的方法中,我需要更改数据库中的一个值。为此,我获取实体,更改一个值,然后我需要将更改保存回数据库

我尝试调用实体生成的更新函数,该函数只调用this.ObjectContext.myEntity.AttachAsModifiedmyENtity;但这些变化永远不会回到数据库


如何保存服务器端的值,即客户端从未有过此数据?

您应该知道,UpdateXXX方法实际上并没有将更改提交到数据库,这只会在稍后发生。知道了这一点,我们可以更改UpdateXXX方法的默认实现:这里假设XXX==Product

    public void UpdateProduct(Product currentProduct)
    {
        this.ObjectContext.Products.AttachAsModified(currentProduct, this.ChangeSet.GetOriginal(currentProduct));
    }


事实证明,在更改之前或之后附着对象没有任何区别。 失踪的佩斯是:


this.ObjectContext.SaveChanges

我从你的回答中读到的是,在进行更改之前,应该附加实体。这是有道理的,但更改仍然没有到达数据库。还有什么我需要打电话的事吗?没有。有一个名为Sumbit的虚拟方法,在调用updatexx之后调用。-公共覆盖布尔提交更改集更改集。它由DomainService类自动调用。
    public void UpdateProduct(Product currentProduct)
    {
        // This line only reattach the entity back to EF context, it doesn't submit changes yet
        this.ObjectContext.Products.AttachAsModified(currentProduct, this.ChangeSet.GetOriginal(currentProduct));

        currentProduct.SomeProperty = "SomeChange"; // This change is going to be submitted later
    }