数据访问层中的静态方法
Posted
技术标签:
【中文标题】数据访问层中的静态方法【英文标题】:Static method in Data Access Layer 【发布时间】:2011-08-02 14:13:46 【问题描述】:我在数据访问层 (DAL) 中使用了很多静态方法,例如:
public static DataTable GetClientNames()
return CommonDAL.GetDataTable("....");
但我发现有些开发人员不喜欢 DAL 中的静态方法的想法。我只是需要一些理由在 DAL 中使用或不使用静态方法。
谢谢
托尼
【问题讨论】:
【参考方案1】:从纯粹主义者的角度来看,这违反了各种最佳实践(例如,对实现的依赖、紧密耦合、不透明的依赖等)。我自己会这么说,但最近我倾向于转向更简单的解决方案,而不是过多地研究“企业”功能和流行语。因此,如果您愿意编写这样的代码,如果这种架构允许快速开发并且可测试,并且最重要的是,它可以解决您的业务问题,那就没问题了。
【讨论】:
我在另一个项目中又发现了同样的问题。我认为静态 DAL 与 OOP 基本思想背道而驰,而且扩展性不好。我也认为添加IOC容器可以避免这种静态DAL。【参考方案2】:如果我不得不选择一个不使用静态方法的原因,那就是它限制了您针对您的代码编写单元测试的能力。例如,为您的 DAL 创建模拟将更加困难,因为没有实际的代码接口,只有一堆静态方法。如果/当您决定采用需要接口来支持 IoC、依赖注入等内容的框架时,这会进一步限制您。
【讨论】:
这也是一个很好的观点,我今天刚刚在 IOC 上发现了这个问题。【参考方案3】:那是Unit of Work
,只是静态的,不是吗?
【讨论】:
我们需要从数据库中读取客户名称,你可以说它是静态的。但即使是实例调用也会以 CLR 的静态调用告终。不确定何时使用静态调用以及何时使用实例调用。 @Tony:你的数据源是什么?奥姆?还有什么? 数据保存在 SQL server 和绑定使用的数据表中。没有使用 ORM。以上是关于数据访问层中的静态方法的主要内容,如果未能解决你的问题,请参考以下文章