如何执行返回不同表的存储过程

时间:2020-06-05 00:33:41

标签: c# sql-server entity-framework stored-procedures ef-core-3.1

我有一个旧的SQL Server数据库,存储过程在该数据库中根据所获取的SQL参数返回不同的数据集-单个表但具有不同的列。我知道决策很差,但是我无法更改,因为它已连接到旧版软件。

使用EF Core 3.1,我尝试使用一种方法来处理该存储过程的执行。我知道根据切换参数@reportFormat的值可以期望的数据集。但是,数据库中没有任何一个表与返回的任何表匹配,因此我无法在拥有的EF上下文中使用这些模型。

所以,我不能打电话:

var things = await db.SomeTable.FromSqlRaw("sp_ListSomething @mcpID, @reportFormat",
                                           mcpID, reportFormat).ToListAsync();

因为SomeTable与我从sp_ListSomething获得的数据集不匹配。

我尝试按照Execute a stored procedure that gets data from multiple tables in EF Core的建议扩展DbContext。它有效,但是包含许多switchtypeof(T)语句。

我还研究了GitHub.com/snickler/EFCore-FluentStoredProcedure的工作原理。

尽管这两种解决方案都能完成工作,但对于我来说,它们对于我来说看起来太麻烦了。

是否有一种更简单的方法来调用存储过程,并通过提供需要数据的类(甚至使用<T>)将结果分成不同的类型?

0 个答案:

没有答案