我最近在使用Entity Framework时跳进了Repository模式。我写了一个基本的CRUD接口,我为每个实体实现了这个接口。我还希望通过使用Expression>进一步发展。但是有一个小问题。 Enougth talk,让我们展示代码。
这是我的用户实体:
public class User
{
public int Id { get; set; }
public string Username { get; set; }
public string Password { get; set; }
}
这是让我烦恼的方法:
public async Task<User> FindOne(Expression<Func<User, bool>> wheres)
{
using (MyContext context = new MyContext())
{
User user = await context.Users.SingleOrDefaultAsync(wheres);
return user;
}
}
以下是我的称呼方式:
// user.Username is set by the user via a form
User findOne = await _usersRepository.FindOne(u => u.Username == user.Username);
问题我的变量中有空值,我确定我有一条符合我条件的记录!
这是&#34; wheres&#34;的复制/粘贴。当我进入FindOne函数时的值:
{u => (u.Username == value(MyApi.Controllers.UsersController+<>c__DisplayClass1e).username)}
事实上,我不知道如何调试......
非常感谢任何帮助。感谢。
答案 0 :(得分:0)
我终于找出问题所在。事实上,上下文没有正确初始化(由于DatabazeInitializer错误,但数据库中有数据),上面显示的代码现在完全正常工作。