【问题标题】:Static method in Data Access Layer数据访问层中的静态方法
【发布时间】:2011-08-02 14:13:46
【问题描述】:

我在数据访问层 (DAL) 中使用了很多静态方法,例如:

public static DataTable GetClientNames()
{
    return CommonDAL.GetDataTable("....");
}

但我发现有些开发人员不喜欢 DAL 中的静态方法的想法。我只是需要一些理由在 DAL 中使用或不使用静态方法。

谢谢

托尼

【问题讨论】:

    标签: c# .net data-structures data-access-layer


    【解决方案1】:

    从纯粹主义者的角度来看,这违反了各种最佳实践(例如,对实现的依赖、紧密耦合、不透明的依赖等)。我自己会这么说,但最近我倾向于转向更简单的解决方案,而不是过多地研究“企业”功能和流行语。因此,如果您愿意编写这样的代码,如果这种架构允许快速开发并且可测试,并且最重要的是,它可以解决您的业务问题,那就没问题了。

    【讨论】:

    • 我在另一个项目中又发现了同样的问题。我认为静态 DAL 与 OOP 基本思想背道而驰,而且扩展性不好。我也认为添加IOC容器可以避免这种静态DAL。
    【解决方案2】:

    如果我不得不选择一个不使用静态方法的原因,那就是它限制了您针对您的代码编写单元测试的能力。例如,为您的 DAL 创建模拟将更加困难,因为没有实际的代码接口,只有一堆静态方法。如果/当您决定采用需要接口来支持 IoC、依赖注入等内容的框架时,这会进一步限制您。

    【讨论】:

    • 这也是一个很好的观点,我今天刚刚在 IOC 上发现了这个问题。
    【解决方案3】:

    那是Unit of Work,只是静态的,不是吗?

    【讨论】:

    • 我们需要从数据库中读取客户名称,你可以说它是静态的。但即使是实例调用也会以 CLR 的静态调用告终。不确定何时使用静态调用以及何时使用实例调用。
    • @Tony:你的数据源是什么?奥姆?还有什么?
    • 数据保存在 SQL server 和绑定使用的数据表中。没有使用 ORM。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2012-04-19
    • 1970-01-01
    • 2012-06-03
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    相关资源
    最近更新 更多