使用SQL

时间:2018-09-03 20:46:06

标签: c# sql data-access-layer

我来自一个被教导如何使用对象和在可能的情况下使用OOP技术的环境,我想这已经引导我走了一条特定的道路,并在相当长的一段时间内影响了我的产品设计。

通常,我的数据访问层将具有许多映射到数据库表的类,因此,如果需要显示公司列表,则将有一个“公司”对象和一个名为“公司”的数据库表。公司对象知道如何使用“ SELECT * FROM company WHERE id = x”类型查询从数据库读取的DataRow实例化自身。因此,无论何时显示公司列表,我都会填充公司对象列表并显示它们。如果我需要显示公司的属性,那么我已经加载了数据。

已经提到'select *'被皱眉了,我的对象方法可能效率低下,但是我在确定另一种使用数据库表和对象的方法时遇到了问题,如果您仅读取特定字段,该方法将起作用-对象只是不会被填充。

是的,我可以更改列表以直接查询数据库中的必填字段并显示它们,但这意味着我的UI代码需要与数据访问代码更紧密地联系在一起-我个人很喜欢分隔各层的对象。

尽管总是愿意学习-我是一个人工作,所以不要总是跟上最新的技术或方法,因此欢迎提出任何意见。

1 个答案:

答案 0 :(得分:0)

我认为无法为您提供确定的解决方案,但我会尝试为您指明正确的方向(因为这更多是理论上的问题)。

根据您在应用程序上遵循的设计模式,您可以将数据访问层与UI分离,并仍然遵循以下规则:在不需要时不提取所有列。我的意思是,为应用程序选择正确的设计模式可以为您带来这种便利。

例如,也许您可​​以将对象的较不详细的版本解释为对象本身(说实话,我认为这不是一个好方法)。

此外,我将评论非常流行的Rails ORM ActiveRecord仅在使用数据时才从DB获取。也许您可以使用类似的逻辑不仅跟踪何时,而且跟踪将使用哪个 列,从而可以限制查询。

相关问题