【问题标题】:Generic Entity Framework Read Method通用实体框架读取方法
【发布时间】:2016-07-02 04:05:00
【问题描述】:

我是 Entity Framework 的新手,希望对我的读取方法有所帮助。

我的方法中有这个 User 类及其 UserDAO

我已经创建了

public IList<User> ReadUsersByName(string _name) {

var search = from m in context.Users
             where m.Name.Contains(_name)
             select m;

IList<User> _users = search.ToList();
return _users;
}

按用户名搜索用户。

除了姓名,我的用户还有其他我想搜索的属性(例如他们的年龄)。

我是否需要复制大部分代码,只需将“姓名”更改为“年龄”?

我只想创建一个方法并通过参数传递搜索值和搜索字段。有可能吗?

【问题讨论】:

  • 您可以创建一个使用反射的方法,该方法将属性名称和搜索值作为参数。
  • 不错。我该怎么做?
  • 旁注:实体框架和 DAO 是一个尴尬的组合。
  • 您能详细说明一下吗?

标签: c# entity-framework methods entity-framework-6


【解决方案1】:

您可以将 where 子句传递给函数:

看到这个答案:C# Linq where clause as a variable

所以,你可以这样写:

public IList<User> ReadUsersWhere(Expression<Func<User, bool>> whereClause) {
  return context.Users.Where(whereClause).ToList();
}

你会这样称呼它:

foo.ReadUsersWhere(u => u.Name.Contains("Joe"));

但到那时,您基本上只是在暴露 IQueriable/重新发明轮子。

【讨论】:

  • 非常感谢。这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多