我正在研究SOA架构。所以我不能访问数据库。我在服务器上使用DTO作为实体。我在客户端填写一个实体并将其提交给服务器,即为实体生成主键。
我使用(客户端)
_customerDomainContext.SubmitChanges(SubmitChangesCallback,null);
在我尝试访问新添加的enity时的回调中,我只能看到我填写的属性。
我可以访问域服务(服务器端)上的提交实体,如下所示。
[Insert]
public void InsertCustomerDTO(CustomerDTO customer)
{
CustomerDTO customerFromDB = CreateCustomerDTOCore(customer);
}
有没有办法让新生成的实体进入客户端,以便我可以访问实体在SubmitChanges上新生成的Key。
非常感谢任何建议。
答案 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
属性中公开它。