0

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

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

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

4

2 回答 2

0

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

    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
    }
于 2011-05-17T18:50:05.677 回答
0

事实证明,在更改之前或之后附加对象没有区别。缺少的部分是:

this.ObjectContext.SaveChanges();

于 2011-05-19T12:33:06.943 回答