上课的扩展方法 - 好的或坏的想法?

dot*_*oob 5 c# asp.net extension-methods entity-framework

我已经有了Entity Framework以及一个存储库和一些用于操作数据的静态类/方法.这是一个典型的例子:

public static IEnumerable<Supplier> Contains(IEnumerable<int> idList)
{
    return SupplierView.Select().Where(x => idList.Contains(x.ID));
}
Run Code Online (Sandbox Code Playgroud)

这些方法查询我的EF存储库,有时我需要传递一些变量来获取我需要的数据.

鉴于我的Supplier实体已经存在,我正在考虑使用类创建我的查询扩展方法,如下所示:

    public static IEnumerable<Supplier> GetSimilar(this Supplier s)
    {
        return SupplierView.Select().Where(/* the criteria matches */));
    }
Run Code Online (Sandbox Code Playgroud)

它只会用于查询数据 - 但由于我将扩展方法基于整个实体,我不确定这是否是一个很好的设计理念 - 但传递params /验证它们当然更方便.

我已经为我的主要实体设置了一个部分类,但我倾向于添加属性,低影响力的东西.

有什么想法吗?

mar*_*c_s 12

Supplier你自己的一类?

如果是,那么我建议只扩展该类 - 而不是强加扩展方法.

如果它是由EF从数据库生成的类,public partial class那么您可以轻松地Supplier在第二个文件中编写其他方法,也可以使用public partial class- 然后在编译时将这些方法合并到一个.NET类中.

我喜欢扩展方法,它们很有意义 - 如果你需要为你不能控制的类添加方法- 例如.NET框架类或第三方类.

  • 当您控制类但不能使用部分定义时(通常当您尝试在另一个程序集中扩展自己的类时),扩展方法也很有意义.因此,根据OP的解决方案架构,部分类可能不是一个选项. (3认同)