存储库模式:DAL 或 BLL [关闭]

Posted

技术标签:

【中文标题】存储库模式:DAL 或 BLL [关闭]【英文标题】:Repository pattern: DAL or BLL [closed] 【发布时间】:2015-08-13 22:57:54 【问题描述】:

我正在尝试实现一个业务逻辑层,其中包含一些用于保存车辆预订数据的用例。对于应该在哪里实现存储库模式,我有点困惑。我应该在 BLL 还是 DAL 中使用它?这听起来很基本,但我在设计阶段有点迷失了。如果 Repository 模式不适合 BLL,那么哪一种适合。感谢任何帮助/提示。

【问题讨论】:

存储库类应该是数据层的一部分,业务层将使用抽象(接口)访问那些。存储库类将具有通用 CRUD 操作。 【参考方案1】:

存储库模式的职责是存储和从数据层获取数据,并对数据层的外观进行抽象。 其背后的想法是,如果该底层发生更改,您可能需要更改存储库的实现,但不需要更改仍会看到相同界面的存储库用户。 特别要记住 SOLID 设计规则和单一职责,存储库不应该有任何业务逻辑,因此不能成为其中的一部分。 不过,业务层使用存储库。

【讨论】:

谢谢 Philip,您所说的“数据层”是指数据访问层吗?困扰我的一个问题是,Repository 是否可以具有 Booking GetBooking(string RegistrationNumber) 之类的功能,是否违反任何良好做法? 这是完全可以接受的(甚至鼓励)。但我会考虑这一点。 GetBooking(string) 或 Get(RegistrationNumber) 是否传达了更好的含义。我建议使用 RegistrationNumber 类型会更好。 感谢大家的时间和精力。谢谢你帮我理清思路!

以上是关于存储库模式:DAL 或 BLL [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

设计 DAL 和 BLL - 相关表的单个/多个数据存储库

ASP.NET MVC:BLL 和 DAL 到存储库设计

如何在 ASP.NET MVC 中组织 DAL [关闭]

如何使用 petapoco 创建 DAL [关闭]

DAL 存储库模式使用 dapper 连接

DAL 中的实体框架存储库模式,如何实现更新功能?