我正在使用EF 4.2,最初我已为每个实体集滚动了我自己的存储库类。在我调查further时,我意识到DbContext和IDbSet实现了我需要的工作单元和存储库模式。
这很好用,但我还想要一些“帮助”方法来使用除主键之外的常用请求属性来返回特定实体。
例如,通过电子邮件和帐户状态而不是Id主键选择员工。我的原始用户存储库有一个重载。
我的问题是我应该在哪里添加这个辅助方法?我认为自己有几个选择:
每个人似乎都有利有弊,但我更倾向于1或2.任何想法?
答案 0 :(得分:1)
您可以使用自定义扩展方法并重复使用它:
public static IQueryable<Employee> Find(this IQueryable<Employee> query,
string email, string status)
{
return query.Where(e => e.Email == email && e.Status == status);
}
现在您将使用它:
var employee = context.Employees.Find(email, status).FirstOrDefault();