使用 SQL 在 OOP C# 应用程序中使用数据访问层



我来自一个被教导使用对象并在可能的情况下使用OOP技术的环境,我想它引导我走上了一条特定的道路,并影响了我的产品设计很长一段时间。

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

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

是的,我可以更改列表以直接从数据库中查询必填字段并显示它们,但这意味着我的 UI 代码需要更紧密地链接到数据访问代码 - 我个人喜欢让对象分隔层的分离程度。

总是愿意学习 - 我自己工作,所以并不总是跟上最新的技术或方法,所以欢迎任何评论。

我不认为我可以向你展示一个明确的解决方案,但我会尝试为你指出正确的方向(因为这更像是一个理论问题(。

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

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

另外,我将评论非常流行的rails ORMActiveRecord仅在使用数据时从DB获取。也许您可以使用类似的逻辑来跟踪何时使用,而且跟踪将使用哪些列,以便您可以限制查询。

最新更新