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服务对数据库进行更改?

谢谢!

Silverlight 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();

如果你能分享更多的代码,我可以整理我的例子,更直接地应用到你的问题。