1

我目前正在设计的应用程序中有以下层:

MSSQL < NHibernate < 存储库 < WCF < Javascript

在加载其托管网页 (EditOrder.aspx?id=104) 时,javascript 应用程序调用 WCF 服务以通过它的 id 获取订单。用户可以使用 UI 来修改 Order 的属性并添加/修改/删除子 OrderLines(一个订单具有 OrderLines 的集合)。

当用户按下保存按钮时,javascript 应用程序将带有 OrderLine 对象的 Order 和数组作为 JSON 发布到 WCF 服务。

计划是让 WCF 服务使用 AutoMapper 在域对象和 DTO 之间进行映射。当浏览器发布的 DTO 被 WCF 服务接收到时,会映射到对应的 Order 域对象,包括其子 OrderLines。

接下来,它将被传递到存储库中。

现在我的问题是:当我要求 NHibernate 更新我的订单时,是否可以让 NHibernate 负责识别任何已删除/插入/修改的 OrderLineItems?如果是这样,让这个工作涉及什么?

更新:这是 NHibernate Merge() 方法的作用吗?

谢谢!

4

1 回答 1

0

不,您必须避免的问题是您在订单和订单行中引用的静态数据。因此,如果您的订单行引用了一些静态产品数据,您必须通过组装您的域订单行从 dto 建立一个新的订单行。Dto 将成为您与外部世界的 Web 服务边界,通常是比您的业务领域模型更扁平的模型。dto 的通信边界是浏览器中的应用程序层或 json。

于 2011-12-26T20:38:44.290 回答