例如,我已经有了以下查询,它可以很好地工作:

public user Get(int id)
{
    return userContext.users.Find(id);
}

然而,我想要一个查询,它将返回包含给定邮箱的对象,到目前为止,我有一个不起作用的:

public user GetEmail(string email)
{
    return userContext.users.Find(email);
}

我猜是因为它需要一个主键作为输入.

将返回具有给定邮箱的用户的查询是我正在寻找的内容:).

(上下文)VVV

private LoopDatabaseEntities userContext = null;

public UserRepository()
{
    userContext = new LoopDatabaseEntities();
}

推荐答案

实体框架中的Find方法要求将主键作为参数,不能直接通过邮箱进行搜索.您可以使用FirstOrDefaultSingleOrDefault以及LINQ进行查询,以通过用户的邮箱检索用户.

public User GetByEmail(string email)
{
    return userContext.users.FirstOrDefault(u => u.Email == email);
}

Csharp相关问答推荐

EF Core判断是否应用了AsSplitQuery()

Microsoft. SQLServer. Types(106.1000.6)在try 从用户定义的类型检索值时引发异常

EF Core在请求列表时忽略列,但在按ID获取时包含

通过EFCore上传大量数据.

如何阻止注释被包含在C#release build. exe中

在发布表单时绑定包含附加(嵌套)列表的对象列表的正确语法是什么

当通过Google的Gmail Api发送邮件时,签名会产生dkim = neutral(正文散列未验证)'

如何在C#中使用正则表达式抓取用逗号分隔的两个单词?

S能够用DATETIME来计算,这有什么错呢?

MigraDoc文档

当前的文化决定了错误的文化

ASP.NET MVC数据批注验证组复选框

为什么我可以在注册表编辑器中更改值,但不能在以管理员身份运行的C#表单应用程序中更改?

为什么连接到Google OAuth2后,结果.Credential为空?

如何在更新数据库实体时忽略特定字段?

C#-如何将int引用获取到byte[]

在c#中,使用Okta和Blazor时,LocalReDirect()陷入循环,出现错误&请求太多.

无法创建工具窗口(用于VBIDE、VBA的COM加载项扩展)

无法通过服务控制台启动.NET Core 6.0服务(错误1053)

阻止CLR释放已封送的双字符指针的内存?