我正在构建一个基于Ria Services的应用程序。
在Visual Studio向导构建的默认方法中,我可以看到应该插入并保留新数据的方法。
例如:
public void InsertCustomer(Customer customer)
{
if ((customer.EntityState != EntityState.Detached))
{
this.ObjectContext.ObjectStateManager.ChangeObjectState(customer, EntityState.Added);
}
else
{
this.ObjectContext.Customers.AddObject(customer);
}
}
但是,我没有看到任何this.ObjectContext.SaveChanges(),我读取它应该被调用,以便在数据存储中插入实体。 ...我是否需要修改这些功能才能保留信息?
提前致谢, 干杯, 詹卢卡。
答案 0 :(得分:4)
当您在客户端上调用SubmitChanges时,它会调用服务器上的DomainService.Submit。然后,默认实现依次调用许多受保护的虚拟方法,包括AuthorizeChangeSet,ValidateChangeSet,ExecuteChangeSet和PersistChangeSet。您的CUD操作将从ExecuteChangeSet调用,ObjectContext.SaveChanges()将从PersistChangeSet调用。
您无需修改默认方法来保留信息,因为默认情况下会对此进行处理。但是,如果您发现需要更复杂的场景,该设计可让您选择覆盖提交管道的块。
答案 1 :(得分:0)
你应该做的是这样的事情:
//Create an instance of your Domain context in your class.
YourDomainContext context = new YourDomainContext();
if (context.HasChanges)
{
context.SubmitChanges(so =>
{
string errorMsg = (so.HasError) → "failed" : "succeeded";
MessageBox.Show("Update " + errorMsg);
}, null);
}
else
{
MessageBox.Show("You have not made any changes!");
}
请在本文中查看此内容:Using WCF RIA Services 或者看一下这段视频:Silverlight Firestarter 2010 Session 3 - Building Feature Rich Business Apps Today with RIA Services