【问题标题】:Data Access Layer returning BusinessObjects返回 BusinessObjects 的数据访问层
【发布时间】:2011-09-22 04:09:25
【问题描述】:

目前我正在研究在 VB 中使用 VS2010 为 Windows 窗体应用程序实现的最佳设计模式。

我对一些设计模式感到有些困惑。我知道 DAL 应该返回对象而不是数据读取器、数据集等,但是......如果我的 DAL 中有两个函数:GetProductById 和 GetAllProducts

这两个函数将分别返回一个 Product 对象和一个 Product 对象集合。 Product 不会是 BOL 对象吗?

如果我将 CRUD 添加到此对象中,那么它不再属于 BOL 您是否有两个版本的对象,一个用于 DAL,一个用于没有数据库方法的 BLL?

我知道这里有类似的帖子,但它们只会让我更加困惑,是否有人可以简单地解释一下 DAL 对象如何交互以及与 BOL 对象不同。

谢谢。

【问题讨论】:

    标签: design-patterns data-access-layer business-objects


    【解决方案1】:

    您描述的场景很好 - 您的 DAL应该返回业务对象(或者,使用 MVC 术语 - 模型对象)。
    模型对象是不同的“层”,控制器层和 DA 层都与之交互。
    您的 CRUD 方法也可以进入 DAL(SaveProduct() 或 DeleteProduct() 等)

    【讨论】:

    • 好的,MVC 现在这就是我感到困惑的原因!但我快到了。所以......我的数据层知道我的模型对象,因此可以创建一个产品列表并将其返回给我的控制器,该控制器对我的视图执行它必须做的事情......然后如果我想删除所说的产品,我会发送它是我的 DAL DeleteProduct(Product) 中的一个方法吗?所以我必须从 DAL 创建一个产品,然后从我的控制器将其发送回 DAL 进行删除?
    • 一切看你应用的具体场景;如果在您的应用程序中更有意义,您可能还有一个 DeleteProduct(int productId) 方法。一切都取决于您的需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多