我有一个 silverlight 4 RIA 域服务。在一种特定的方法中,我需要更改数据库中的一个值(当然还有其他)。为此,我获取实体,更改一个值,然后我需要将该更改保存回数据库。
我试过调用实体生成的更新函数,它只是调用 this.ObjectContext.myEntity.AttachAsModified(myENTity); 但更改永远不会回到数据库。
如何从服务器端保存值(即客户端从未拥有此数据)?
我有一个 silverlight 4 RIA 域服务。在一种特定的方法中,我需要更改数据库中的一个值(当然还有其他)。为此,我获取实体,更改一个值,然后我需要将该更改保存回数据库。
我试过调用实体生成的更新函数,它只是调用 this.ObjectContext.myEntity.AttachAsModified(myENTity); 但更改永远不会回到数据库。
如何从服务器端保存值(即客户端从未拥有此数据)?
您应该知道 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
}
事实证明,在更改之前或之后附加对象没有区别。缺少的部分是:
this.ObjectContext.SaveChanges();