我最近一直在研究实体框架和存储库模式,在存储库类中,我创建了一个名为 find 的函数,它使用谓词从中生成实体。这是我的存储库功能。
public T Find(Expression<Func<T, bool>> filter = null, Func<IQueryable<T>, IOrderedQueryable<T>> orderby = null, string includeProperties = "")
{
IQueryable<T> query = dbSet;
if (filter != null)
{
query = query.Where(filter);
}
foreach(var includeProperty in includeProperties.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
if (orderby != null)
{
return orderby(query).First();
}
else
{
return query.First();
}
}
这是我的 DTO 课程。
public class UsersDo
{
public int UserId {get;set}
public string Username {get;set}
...
}
现在我在我的页面上调用 Find 函数,例如:
usersDao.Find(x=>x.Username == "username")
但是我得到了错误
The entity or complex type 'UsersDo' cannot be constructed in a LINQ to Entities query.
谁能建议这里出了什么问题。
在存储库类下编辑
,我有一个构造函数:
private readonly DbSet<T> dbSet;
private readonly DataContext context;
public GenericDao(DataContext _context)
{
context = _context;
dbSet = context.Set<T>();
}
我的道课:
public class UsersDao : GenericDao<UsersDo>, IUsers
{
public UsersDao(DataContext context) : base (context) {}
...
}
大话西游666
茅侃侃
catspeake
相关分类