【发布时间】:2011-02-25 20:08:27
【问题描述】:
基本上,DAL(数据访问层)应该提供简单的 CRUD(创建/读取/更新/删除)方法,但我总是想创建更复杂的方法,以最大限度地减少来自业务逻辑层的数据库访问往返。
您如何看待以下 CRUD 扩展(我想大部分都可以):
- 读取:GetById、GetByName、GetPaged、GetByFilter... 等。方法
- 创建:GetOrCreate 方法(模型实体从数据库返回或如果未找到并返回则创建)、创建(很多关系)而不是创建和多个 AssignTo 方法调用
- 更新:Merge 方法(一次调用即可更新、创建和删除实体列表)
- 删除:Delete(bool children)- 可选子项删除,Cleanup 方法
- 安装方法:DAL 负责使用预定义的字典实体填充空数据库
您通常在哪里实现实体缓存功能? DAL 还是 BLL? (我的选择是 BLL,但我也看到了 DAL 的实现)
当你决定的时候边界在哪里:这个操作太具体了,所以我应该在业务逻辑层中将它实现为 DAL 多次调用?我经常发现在十几次数据库往返中实现的 BLL 操作不足,因为开发人员害怕创建更复杂的 DAL。
提前感谢您!
【问题讨论】:
-
好问题。谢谢,你有很好的答案。
标签: architecture data-access-layer