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

时间:2015-02-26 15:25:08

标签: c# asp.net entity-framework extension-methods

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

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

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

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

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:12)

Supplier是你自己的一类吗?

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

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

我喜欢扩展方法并且它们很有意义 - 如果您需要将方法添加到您无法控制的类 - 例如.NET框架类或第三方类。