【问题标题】:Database class one method vs lots of methods [closed]数据库类一种方法与许多方法[关闭]
【发布时间】:2015-02-14 03:25:27
【问题描述】:

我正在为我的应用程序创建一个数据库类以连接到 Sql Server 数据库,并且我正在考虑在其中集中查询和执行过程。但我在为每个操作使用一种方法(这可能会达到一百种方法)还是创建一种更“通用”的方法之间犹豫不决。

例子:

1) 每个动作一个方法:

public bool TryLogin(string username, string password) {
[do query/procedure things and return]
}

2) “通用”方法:

public DataSet procedure(string name, Dictionary<string, object> values) {
[run through the values dictionary to 
define the parameters, run and return a dataset for caller class]
}

我想到了第一个,但我想知道如果方法太多不会对性能不利。

对于第二个,我考虑过使用 SqlParameter AddWithValue(string, object),虽然我不确定它是如何工作的。

哪一个更好?还是有更好的解决方案?

提前致谢,对于英文错误深表歉意。

【问题讨论】:

    标签: c# database


    【解决方案1】:

    我更喜欢第一个,尽管您可以将两者结合起来,让您的TryLogin 方法调用到procedure 方法来进行数据库调用。然后,如果您的存储过程之一有特殊需要,您只需要重新实现数据库调用。使用辅助方法来构造 values 参数,总体上可以节省一些代码。

    仅使用“通用”方法,您就迫使调用者构造字典,而且看起来您还强迫调用者知道过程和参数名称。因此,现在您已经为调用者创造了不必要的复杂性,丧失了对参数的类型检查,并且您的数据层正在泄漏到您的业务对象中。

    我也不会将所有数据库调用封装到一个类中。这听起来像是一场维护噩梦。至少我会按他们的领域来分解它们。

    【讨论】:

    • 如果我使用第一种方式,方法太多会影响性能吗?在破坏它的情况下,我会为使用连接的过程创建一个连接类和其他较小的类?谢谢
    • 在这种情况下使用太多方法可能不会影响性能,但它是code smell。拥有一个连接类和使用该连接的较小类是我可能构建它的方式。
    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 2014-10-18
    • 2011-12-10
    • 2019-09-20
    • 2021-08-29
    • 1970-01-01
    • 2011-08-01
    • 2021-01-06
    相关资源
    最近更新 更多