5

我觉得我在问一个非常基本的问题,我想我应该能够在互联网上的某个地方找到一个好的答案。但是我已经筋疲力尽了,只找到了几根枯骨。最重要的是,我现在害怕这个问题可能太主观了:)

不管怎样,问题来了。在面向对象程序中访问、处理和操作来自关系数据库的数据的良好实践是什么?到目前为止,在我的编程中,我一直在以一种程序化的方式处理数据库数据。我目前正在积极尝试改善我的 OOP 习惯,但我不确定如何处理这个问题。

这是我正在使用的场景之一。我有一张桌子,里面有许多制造工作条目。我正在编写(改进)的应用程序对每个作业执行大量处理。例如,我遍历表中的每一行并执行以下操作:

  • 将截止日期发布到 Google 日历
  • 在给定目录中创建作业唯一的文件夹
  • 为作业创建工作订单
  • 为工作创建一份合同简介
  • 管理旅行证件
  • 通过电子邮件将信息发送给几个人
  • 等等,名单还在继续

你明白了。每项工作都会进行大量处理。目前,我拥有大多数优秀程序员所说的一堆意大利面条式代码。也许它不是那么糟糕,但几乎。我使用 for each 循环遍历表中的每一行,并按顺序对每一行执行每个操作。我不喜欢目前的设计方式,但我不知道如何做得更好。

我希望我可以拥有一个名为“Jobs”的简洁对象,它可以实现作业的所有属性并提供执行每个操作的方法。然后我什至可以制作一个定制系列来处理我的工作,整个世界都会变得更加光明。整个解决方案将更具可读性,更易于维护,更容易添加对每个作业执行的操作(经常发生)等。

但我的问题是我不知道如何在花哨的对象和数据库之间建立连接。我应该使用某种对象关系映射(我阅读了各种关于此的混合意见)吗?我是否只是遍历所有行并将它们转换为在集合中累积的对象?还是以程序方式继续进行此类项目的最佳选择?我会喜欢你的回答和意见。

我以抽象的方式对有关此主题的信息感兴趣。换句话说,我想知道如何处理这种情况。不仅仅针对我给出的示例。但当然,细节也很棒。我使用 VS 2010 使用 Visual Basic 和 C# 进行大部分编程。

4

2 回答 2

4

查看存储库模式。这是一种以有意义的方式将数据访问与业务处理分开的好方法。应用这种模式,我有几个项目:

  • 实体 - 存储东西的对象
  • DataAccess - ORM DbContext 和 ADO.NET 包装器
  • Repository - 包装查询以向应用程序的其余部分呈现强类型函数
  • TheRest - 其他项目/层:业务、GUI 等

请参阅如何将实体框架上下文与依赖注入一起使用?以获得对每种项目类型的良好描述

于 2012-05-15T05:38:19.980 回答
1

但我的问题是我不知道如何在花哨的对象和数据库之间建立连接。我应该使用某种对象关系映射(我阅读了各种关于此的混合意见)吗?

是的。

至于处理。使用访问者模式,让所有想要处理数据的不同代码将自己注册为访问者。您还可以使用控制反转容器来管理它(IHandlerOf<Job>IHandlerOf<TravelerDocument>)。

它为您提供了更松散耦合的数据处理方式。

于 2012-05-15T05:38:58.997 回答