0

我正在研究 SOA 架构。所以我无权访问数据库。我在服务器上使用 DTO 作为实体。我在客户端填写一个实体并将其提交到服务器,这就是为实体生成主键的时候。

我使用(客户端)

_customerDomainContext.SubmitChanges(SubmitChangesCallback, null);

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

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

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

有没有办法将新生成的实体获取到客户端,以便我可以在 SubmitChanges 上访问实体新生成的密钥。

任何建议都将不胜感激。

4

1 回答 1

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属性中公开它的客户端。

于 2012-10-30T21:21:11.507 回答