在SubmitChanges()上插入时,将提交服务器的实体更改回客户端

时间:2012-10-30 20:08:49

标签: c# silverlight wcf-ria-services

我正在研究SOA架构。所以我不能访问数据库。我在服务器上使用DTO作为实体。我在客户端填写一个实体并将其提交给服务器,即为实体生成主键。

我使用(客户端)

_customerDomainContext.SubmitChanges(SubmitChangesCallback,null);

在我尝试访问新添加的enity时的回调中,我只能看到我填写的属性。

我可以访问域服务(服务器端)上的提交实体,如下所示。

   [Insert]
    public void InsertCustomerDTO(CustomerDTO customer)
    {
      CustomerDTO customerFromDB = CreateCustomerDTOCore(customer);
    }

有没有办法让新生成的实体进入客户端,以便我可以访问实体在SubmitChanges上新生成的Key。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

只需使用回调的参数:

context.SubmitChanges(x =>
            {
                //Contains your entities fulfilled by the server
                x.ChangeSet
            }, null);

它包含保存后服务器返回的实体,因此在您的关键字段中,您将找到实际的键值。
为了运行上述过程,您可能不需要“编辑”您的实体。

[Insert]
public void InsertJeopardyModel(CustomerDTO jeopardy)
{
    CustomerDTO customerFromDB = CreateCustomerDTOCore(customer);
    jeopardy.Id = customerFromDB.Id;
    jeopardy.MyProperty = customerFromDB.MyDBEquivalentProperty;
}

正如您在编辑的示例中所看到的,我实际上正在编辑CustomerDTO对象,就像Enitity Framework或LINQ2SQL一样。
然后,该经过编辑的实体将被序列化到客户端,该客户端将在Changeset属性中公开它。