运行 存储过程需要 DbSet 吗?

Is a DbSet required to run a stored procedure?

我有一个存储过程,它 returns 来自多 table 查询的数据。为此,我是否需要为查询中涉及的每个 table 创建一个 DbSet?我发现所有使用 FromSql 的示例都在 FromSql 子句之前指定了 DbSet(例如,下面示例中的 Books)。

using (var context = new SampleContext())
{
    var books = context.Books
        .FromSql("EXEC GetAllBooks")
        .ToList();
}

我的理解是一个 DbSet 代表一个 table。请注意,我正在处理现有的数据库,因此我没有使用 EF 生成 tables.

谢谢,

我假设 EFCore 给出了 FromSql 的标签和用法。

对于 EFCore 2.1+,我会使用 DbQuery (https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.dbquery-1?view=efcore-2.2)。

对于已弃用 DbQuery 的 EFCore 3.0,替换为无密钥 DbSet (https://docs.microsoft.com/en-us/ef/core/modeling/keyless-entity-types)。

我已经用存储过程完成了前者,它的工作方式与您预期的一样。