【发布时间】:2011-12-23 06:30:58
【问题描述】:
需要有关在复杂嵌套 DTO 上实施更新和删除操作的“最佳”方法的建议。举个非常简单的例子,假设我们有这样的结构:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Employer Company { get; set; }
}
public class Employer
{
public string Name { get; set; }
public string Address1 { get; set; }
public string City { get; set; }
public string State { get; set; }
}
此处根据 Employer 更新 Person 可能意味着几件事: 1. 以前 Person 没有 Employer,我们需要插入 DB 来引入新的 Employer。 2.之前有一个Employer,我们只是在更新Employer的内部数据 3. 雇主已从 Person 中删除
问题:
如果你有一个域/业务组件对象,比如 PersonBusinessComponent 和一些方法,比如 PersonBusinessComponent.Update(Person) 识别正在执行哪个场景并应用更改的最佳方法是什么——这意味着如果它是一个删除操作,那么我们将调用一些 EmployerDALC.Delete 方法,或者如果它是一个 Insert 那么显然是 EmployerDALC.Insert 等...... 我知道一种选择是从数据库中获取当前版本,然后繁琐地比较 Person 中每个嵌套对象的存在,但我希望有一些更好的方法,甚至可能更通用的方法可以实现来处理任何此类操作整个解决方案。
注意:我没有使用 MS Entity Framework。
【问题讨论】:
-
这取决于您系统的架构。这是程序模型、ActiveRecord 模型还是领域模型?我看到您正在使用 DTO,因此这意味着域模型。