Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 返回BusinessObjects的数据访问层_Design Patterns_Data Access Layer_Business Objects - Fatal编程技术网

Design patterns 返回BusinessObjects的数据访问层

Design patterns 返回BusinessObjects的数据访问层,design-patterns,data-access-layer,business-objects,Design Patterns,Data Access Layer,Business Objects,目前,我正在研究在VB中使用VS2010实现windows窗体应用程序的最佳设计模式 我对一些设计模式有点困惑。我理解DAL应该返回对象,而不是数据读取器、数据集等,但是。。。如果DAL中有两个函数:GetProductById和GetAllProducts 这两个函数将分别返回一个产品对象和一组产品对象。产品不是BOL对象吗 如果我把CRUD添加到这个对象中,那么它就不能再属于BOL了。你有两个版本的对象吗?一个用于DAL,一个用于BLL,没有数据库方法 我知道这里也有类似的帖子,但它们只会让

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

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

这两个函数将分别返回一个产品对象和一组产品对象。产品不是BOL对象吗

如果我把CRUD添加到这个对象中,那么它就不能再属于BOL了。你有两个版本的对象吗?一个用于DAL,一个用于BLL,没有数据库方法

我知道这里也有类似的帖子,但它们只会让我更加困惑,有没有可能有人可以简单地解释DAL对象与BOL对象的交互和区别


谢谢。

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

您的CRUD方法也可以进入DAL(SaveProduct()或DeleteProduct()等)

好的,现在是MVC了,这就是我感到困惑的原因!但是我正在到达那里。所以我的数据层知道我的模型对象,因此可以创建一个产品列表并将其返回给控制器,控制器对我的视图执行它必须执行的操作。。。然后,如果我想删除所述产品,我会将其发送到我的DAL DeleteProduct(产品)中的方法?因此,我必须从DAL创建一个产品,然后从我的控制器将其发送回DAL进行删除?所有这些都取决于应用程序的特定场景;如果
DeleteProduct(int-productId)
方法在您的应用程序中更有意义,那么您也可以使用该方法。一切取决于你需要什么。