具有非主键值的 FindAsync

Posted

技术标签:

【中文标题】具有非主键值的 FindAsync【英文标题】:FindAsync with non-primary key value 【发布时间】:2013-09-28 15:48:17 【问题描述】:
public class Foo

     public int Id  get; set; 
     public int UserId  get; set; 

这似乎是异步执行此操作的方法:

DatabaseContext db = new DatabaseContext();
Foo foo = await db.Foos.FindAsync(fooid);

如何根据 UserId 的值异步获取特定用户的所有 Foo?

【问题讨论】:

【参考方案1】:

假设您使用的是 Entity Framework 6.0(预发布版):

var userId = ...;
var foos = await db.Foos.Where(x => x.UserId == userId).ToListAsync();

【讨论】:

提示:如果您缺少 ToListAsync(),则使用 System.Data.Entity 添加; 有什么办法可以偷懒吗? @Sinjai:如果你的意思是懒惰地加载实体属性,那么没有。 EF 不支持异步延迟加载。 @StephenCleary 这样的代码不会成为问题,那么,当数据库达到一定大小时? @Sinjai:如果您对知道自己需要的关系使用预加载,并为您可能需要或可能不需要的关系使用显式查询,那么它在数据库方面与延迟加载关系一样有效.如果不清楚,我建议您提出自己的问题。

以上是关于具有非主键值的 FindAsync的主要内容,如果未能解决你的问题,请参考以下文章

在 MySQL 中,如何编写 INSERT-INTO-VALUES 查询,以便在已存在具有相同主键值的记录时将其静默丢弃?

SpringDataJPA使用Oracle序列设置值:主键字段、非主键字段

MySQL怎么利用函数和触发器实现非主键自增?

非主键之间的休眠关系OneToMany

主键索引和普通索引的工作原理

基于非主键的ef核心查询