将SP响应结构映射到c#实体

问题描述

基本问题是我需要将 LinqTosql 更改为另一种技术,该技术允许我以类似的方式将存储过程的结果映射到类。

using (var dataContext = new ProductsDataContext())
{
    var linqResult = dataContext.GetProducts(productIds);
    foreach (var linqItem in linqResult)
    {
    }
}

直到现在,我一直在考虑创建一个将结果集映射到实体的工具。为此,我意识到我从数据库中获得了足够的信息来创建它,例如:

-- SCHEMES
SELECT * FROM sys.schemas
WHERE principal_id = 1
AND schema_id <> 1

-- PROCEDURES BY SCHEME
SELECT * FROM sys.procedures
WHERE schema_id = 17

-- ParaMETERS BY PROCEDURE
SELECT REPLACE(name,'@','') name,user_type_id
FROM sys.parameters
WHERE object_id = 15339119

-- RESULT SET FROM SP
EXECUTE sp_describe_first_result_set N'EXECUTE GetProducts'

到目前为止,我有足够的信息来创建一个工具,该工具允许我将 SP 的结果转换为 c# 实体。

问题是我有一些返回 2 个表的 SP,对于这些情况,sp_describe_first_result_set 对我不起作用

LinqTosql 技术变更要求

  • 我应该继续使用存储过程
  • 我应该能够通过数据上下文调用存储过程
  • 我必须能够将输出结果映射到实体,所述实体必须是自动生成的(而不是手动生成
  • 我必须使用 Framework 5.0

我尝试过的替代方案

  • 我尝试通过 EF Core 构建数据库,但这只会映射表,而不会将 SP 结果转换为实体
  • 我使用了一个名为 SpToCore.exe 的工具,它走在正确的轨道上,但几乎错误地映射了所有内容

问题 1:

  • 有没有我没有考虑的替代方案,可以为我们的需求提供更好的解决方案?

问题 2:

  • 有没有办法获取一个 SP 结果集的列的详细信息,类似于 sp_describe_first_result_set 目前所做的,但仍然是多个结果集时?

最后的考虑

  • 我并不担心 SP 会返回不同的结果,因为所有 SP 的构建方式都是这样,如果我们得到肯定的响应,我们将始终拥有相同的响应结构。

非常感谢您的时间

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)