Silverlight RIA服务-提交更改/更新
本文关键字:更新 提交 RIA 服务 Silverlight | 更新日期: 2023-09-27 17:51:25
我正在使用一个使用Silverlight RIA服务的应用程序。我对这项技术不是很熟悉。目前,我已经加载了一个用户的内容。用户可能有也可能没有地址。Address是一个CLR对象,如果用户没有提供他们的地址,它可能为空。如果他们有,地址包含街道,城市,州相关信息。这个地址在我的视图模型中被设置为属性。我的UI是双向绑定到视图模型中的Address属性的。
当用户点击"保存"在我的页面上,我希望这个地址得到插入或更新到我的数据库。为了做到这一点,我有:
this.DomainContext.SubmitChanges(); // DomainContext is initialized in the constructor of my view model.
我注意到没有什么是通过使用SQL Profiler发送到数据库。如何使用RIA服务对数据库进行更改?
谢谢!
Ed的例子当然是一个很好的方式来解决你的需求,但我建议你在Silverlight中使用回调来处理涉及RIA服务的操作:
// Save
SubmitOperation so = dataContext.SubmitChanges();
// Callback
so.Completed += (s, args) =>
{
// Error?
if (so.HasError)
{
// Message
MessageBox.Show(string.Format("The following error has occurred:'n'n{0}", so.Error.Message));
// Set
so.MarkErrorAsHandled();
}
};
我假设您的模型在服务器上定义为类似
的东西public class User
{
[Key]
public int? UserID { get; set; }
/* Other properties */
[Association("User_1-1_Address", "UserID", UserID", IsForeignKey = false)]
[Include]
public Address Address { get; set; }
}
public class Address
{
[Key]
public int? UserID { get; set; }
/* Other properties */
[Association("User_1-1_Address", "UserID", UserID", IsForeignKey = true)]
[Include]
public User User{ get; set; }
}
和您的DomainService
允许插入/更新地址
public void InsertAddress(Address address) { ... }
public void UpdateAddress(Address address) { ... }
在客户端,当您添加一个新的Address
时,您的ViewModel将在User上设置它。
this.User.Address = new Address();
这将导致您的域服务上的InsertAddress
方法调用
this.DomainContext.SubmitChanges();
如果Address
已经存在,则
this.User.Address.City = "Oz";
导致域服务上的UpdateAddress
方法调用
this.DomainContext.SubmitChanges();
如果你能分享更多的代码,我可以整理我的例子,更直接地应用到你的问题。