使用非主键值的FindAsync

25
public class Foo
{
     public int Id { get; set; }
     public int UserId { get; set; }
}

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

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

如何根据用户ID的值异步获取该用户的所有Foo?

1个回答

51

假设您正在使用实体框架 6.0(预发布版):

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

8
提示:如果您缺少 ToListAsync(),请添加 using System.Data.Entity;。 - Dmitry Lyalin
有什么方法可以懒惰地完成这个吗? - Sinjai
@Sinjai:如果你指的是惰性加载实体属性,那么不行。 EF 不支持异步惰性加载。 - Stephen Cleary
@StephenCleary 那样的代码在数据库达到一定规模时,不会成为问题吗? - Sinjai
@Sinjai:如果你使用急切加载来获取你需要的关系,而对于你可能需要或不需要的关系则使用显式查询,那么从数据库的角度来看,它与惰性加载的关系一样高效。如果这还不清楚,我建议你提出自己的问题。 - Stephen Cleary

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接