我有一个Silverlight 4 RIA域名服务。在一个特定的方法中,我需要更改数据库中的一个值(当然还有其他内容)。为此,我获取实体,更改一个值,然后我需要将该更改保存回数据库。
我试过调用实体生成的更新函数,它只调用this.ObjectContext.myEntity.AttachAsModified(myENtity);但改变永远不会回到数据库。
如何从服务器端保存值(即客户端从未拥有此数据)?
答案 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();