域服务 - 服务器端更新

时间:2011-05-17 17:40:42

标签: silverlight entity-framework entity-framework-4 domainservices

我有一个Silverlight 4 RIA域名服务。在一个特定的方法中,我需要更改数据库中的一个值(当然还有其他内容)。为此,我获取实体,更改一个值,然后我需要将该更改保存回数据库。

我试过调用实体生成的更新函数,它只调用this.ObjectContext.myEntity.AttachAsModified(myENtity);但改变永远不会回到数据库。

如何从服务器端保存值(即客户端从未拥有此数据)?

2 个答案:

答案 0 :(得分:0)

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

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

    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
    }

答案 1 :(得分:0)

原来,在更改之前或之后附加对象没有任何区别。 缺少的是:

this.ObjectContext.SaveChanges();