.ToListAsync
用于从EF Core中的数据库获取项目集合。很清楚但是,获得单个物品的正确方法是什么?如果可能,以异步方式。
public async static Task<Source> LoadEntityAsync(int sourceID)
{
using (var db = new RPDBContext())
{
var sources =
await
db.Source
.Where(x => x.SourceID == sourceID)
.ToListAsync();
// TODO that's like a hack:
return sources.First();
}
}
最佳答案
如果要使对象唯一,则应使用SingleOrDefaultAsync
。
如果从域限制中知道该对象是唯一的,或者通过主键访问该对象,则可以使用FirstOrDefaultAsync
。
var sources = await db.Source
.Where(x => x.SourceID == sourceID)
.SingleOrDefaultAsync();
您可以使用另一个重载并缩短查询
var sources = await db.Source
.SingleOrDefaultAsync(x => x.SourceID == sourceID);
同样的规则适用于
FirstOrDefaultAsync
。如果要确保对象存在,只需删除
OrDefault
部分并使用SingleAsync
和FirstAsync
即可。关于c# - Entity Framework 核心(7): load single entity by id,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35815557/