N-Tier - 插入与更新的责任位置
Posted
技术标签:
【中文标题】N-Tier - 插入与更新的责任位置【英文标题】:N-Tier - responsbility location for insert vs update 【发布时间】:2011-08-23 10:59:39 【问题描述】:我正在创建一个应用程序,该应用程序分为数据层(使用存储库模式和 EF 4.0)、业务层(具有附加逻辑的 POCO)和服务层(使用 WCF 向客户端公开)。
当我将记录保存到数据库时,我需要检查我是在更新现有记录还是插入新记录。该责任应该在哪里 - 在服务层中,以便明确管理对象的生命周期,或者在数据层中,以便保存记录将隐含地确定要采取的操作。
欢迎所有 cmets - 我不能自己决定!
【问题讨论】:
【参考方案1】:我的第一个想法是,我认为这是 Entity Framework 应该能够自行解决的问题,但我对此不是 100% 确定的。
除非 EF 为你做这件事,否则我会将这个逻辑放在存储库中。您将客户对象传递给存储库,如下所示:myRepository.Save(myCustomer);
然后在客户的 Save 方法中,它会检查客户是否分配了 ID,或者您可以要求 EF 跟踪其状态,然后执行插入或更新。这样,无论在哪里调用 Save ——Web 服务、UI 等,这个逻辑都会得到处理。
【讨论】:
【参考方案2】:如果有任何业务规则适用于保存业务对象,则责任在业务层,否则应由日层负责。
您使用的是 EF 应该无关紧要。
【讨论】:
以上是关于N-Tier - 插入与更新的责任位置的主要内容,如果未能解决你的问题,请参考以下文章