DbFunctions类是否违反SRP

时间:2016-02-19 19:13:44

标签: c# solid-principles single-responsibility-principle

System.Data.Entity命名空间中有DbFunctions类。它有近100个函数来处理字符串操作,DateTime计算和统计函数。关于SO有很多SRP问题,所以觉得这是适当的论坛。 Wikipedia定义SRP如下:

  

单一责任原则规定每个模块或类别   应该对功能的一部分负责   由软件提供,责任应该完全   由类封装。它的所有服务应该是狭隘对齐的   有责任

在我看来,DbFunctions是违规者。

在定义一个班级的目的时,许多人主张计算" ands"你在定义中使用。不止一个,你可能违反了SRP。根据我的统计,DbFunctions中至少有3个。我对SRP的理解有缺陷还是太字面?我知道总有边缘情况,但在我看来,这似乎违反了SRP。这肯定不会减少班级的超有用性。

此类是否符合SRP?

1 个答案:

答案 0 :(得分:1)

我不认为它违反了SRP。以下是MSDN中给出的定义

  

提供公共语言运行时(CLR)方法,公开EDM规范函数以在DbContext或ObjectContext LINQ to Entities查询中使用。

上述定义中的责任是公开EDM Canonical函数以在Linq To SQL查询中使用,这是单一责任。