N层 - 插入与更新的责任位置

时间:2011-05-11 15:59:18

标签: architecture business-logic-layer n-tier-architecture data-layers

我正在创建一个应用程序,它分为数据层(使用存储库模式和EF 4.0),业务层(带有附加逻辑的POCO)和服务层(使用WCF向客户端公开)。

当我将记录保存到数据库时,我需要检查并查看是否正在更新现有记录或插入新记录。应该在哪里负责 - 在服务层中明确管理对象的生命周期,或者在数据层中,以便保存记录将隐式确定要采取的操作。

所有评论都欢迎 - 我无法自己决定!

2 个答案:

答案 0 :(得分:0)

我的第一个想法是,我认为这是实体框架应该能够弄清楚的东西,但我不是百分之百确定。

除非EF为你做这件事,否则我会把这个逻辑放在存储库中。您将Customer对象传递给存储库,如下所示:myRepository.Save(myCustomer);

然后在客户的Save方法中,它检查客户是否已分配ID,或者您可以要求EF跟踪其状态,然后执行插入或更新。这样,无论Save被调用到何处 - Web服务,UI等,这个逻辑都得到了解决。

答案 1 :(得分:0)

如果有任何适用于保存业务对象的业务规则,那么责任在于业务层,否则决策应该是日层的责任。

你使用EF应该是无关紧要的。