【问题标题】:Best Practice with classes and the database类和数据库的最佳实践
【发布时间】:2017-08-30 16:42:28
【问题描述】:

我想了解更多关于在使用数据库时使用类的适当方法。这是我认为没问题的示例。(如果好奇,可以使用 C# 和 SQL Server)

我有一个名为“Features”的表,其中的大多数列都包含 ID(外键)。为了将该表加载到应用程序中,我创建了一个“DBFeatures”类来保存所有列。接下来我应该有一个常规的“Features”类,它具有“DBFeatures”类中所有属性的实际值。 “功能”类将有一个方法打开与数据库的连接以获取具有给定 ID 的所有正确值。那么“Features”类就可以直接使用了。

反过来也是一样,我创建了一个“Features”对象,然后将其转换为“DBFeatures”类,在插入时传递给数据库。

这是解决这个问题的正确方法吗?还有哪些更好的选择?唯一的另一个选择是只有一个类,“DBFeature”类,当我创建该类的对象时,每次设置或获取属性时,它都必须访问数据库以通过提供 ID 来获取值。

编辑

我会将这些数据用于表单。大多数表将是只读的,它们将存储到对象列表中,然后可以与控件一起使用(如组合框的数据源)。我还希望能够将用户输入加载到一个类中,该类将输出到数据库中的一个表中。

【问题讨论】:

    标签: c# class oop database-design


    【解决方案1】:

    很多关于如何做某事的计划取决于您没有提供的实施。你打算用你的对象做什么?是为了报告吗?您需要操纵这些值吗?

    我将假设您将要操作数据,在这种情况下,您应该有一个类来打开数据库并将其加载到代表它的类中。

    该类可以具有与列对应的属性,然后您可以拥有一个类列表来表示行。

    这只是如何做到这一点的一个例子,但如果不知道您的意图是什么并了解更多细节,就不可能说出来。

    【讨论】:

    • 我会将这些数据用于表单。大多数表将是只读的,它们将存储到对象列表中,然后可以与控件一起使用(如组合框的数据源)。我还希望能够将用户输入加载到一个类中,该类将输出到数据库中的表中。
    • 另外,是的,我知道我将为每一行提供该类的对象列表
    • 好的,如果你正在使用 dapper 那很好,为什么不直接使用呢?我认为如果你做你认为最好的事情,然后将同样的问题发布到 Code Review,你会从你的问题中获得更多的收获。如果没有全貌,很难对这样的问题提出建议。
    • 听起来你的想法是对的。创建一个获取数据并插入数据的类。将该逻辑与您尝试做的其他事情分开。有一个将数据提供给 UI 并将数据返回给插入类的类。
    • 我想是的,谢谢你的想法,感谢你的时间。
    【解决方案2】:

    看起来你需要像实体框架这样的 ORM。

    【讨论】:

    • 我使用 dapper 作为我的 ORM,但这仅用于将表存储到类中,将类存储到我认为的表中。
    • 我不熟悉 dapper,但我认为它可以做几乎与其他 ORM 相同的事情。我认为您不需要“Features”和“DBFeatures”类。你只需要一个。
    猜你喜欢
    • 2015-09-10
    • 1970-01-01
    • 2012-09-16
    • 2018-07-18
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2018-11-19
    相关资源
    最近更新 更多