c# - Entity Framework 核心 (7) : load single entity by id

标签 c# .net entity-framework async-await entity-framework-core

.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 部分并使用 SingleAsyncFirstAsync

关于c# - Entity Framework 核心 (7) : load single entity by id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35815557/

相关文章:

c# - 如何在 WCF 中将类型公开为不同的名称?

c# - MVC 自动生成索引方法 - 为什么需要 .include?

c# - Entity Framework ,从多个表中获取数据并选择要显示的列

asp.net - Entity Framework : disable delete globally

c# - 使用 C# 将结构中的字节写入文件

c# - System.ArgumentException : „Column does not belong to table .” - 如何修复此错误(将数据从 csv 文件导入到 mysql 数据库)?

C#防止CMD运行后自动关闭?

c# - 使用服务主体对 GetReportInGroupAsync PowerBI Embedded API 调用进行未经授权的响应

c# - 如何使用 protobuf-net 序列化/反序列化锯齿状/嵌套数组?

c# - 访问 Custom.Configuration 文件中的 AppSettings (CS0122)