表达式<func <t,bool =“”>&gt;,存储库模式和实体框架存在问题</func <t,>

时间:2014-03-23 19:30:00

标签: c# entity-framework lambda repository-pattern

我最近在使用Entity Framework时跳进了Repository模式。我写了一个基本的CRUD接口,我为每个实体实现了这个接口。我还希望通过使用Expression&gt;进一步发展。但是有一个小问题。 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)}

事实上,我不知道如何调试......

非常感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

我终于找出问题所在。事实上,上下文没有正确初始化(由于DatabazeInitializer错误,但数据库中有数据),上面显示的代码现在完全正常工作。