首页 > 解决方案 > 如何从存储过程接收动态数据

问题描述

我正在使用 Entity Framework Core 并希望从我的存储过程中接收动态数据。例如:

result1FromGetDataMethod = {id=xxx, datetime=xxx, isValid=xxx, ...}
result2FromGetDataMethod = {id=xxx, datetime=xxx, otherParamWhichIsNotInResult1=xxx, ...}
result3FromGetDataMethod = {completelyOtherParam=xxx, ...}
...

我不知道哪些键值对来自数据库,我不需要知道我的业务逻辑。有没有办法从存储过程中获取动态数据?我尝试了以下方法,但没有奏效。

public class TestContext : DbContext
{
    public TestContext(DbContextOptions<TestContext> options) : base(options)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Query<dynamic>();
    }

    public dynamic GetData(MyRequestOptions searchParams)
    {
        SqlParameter fromDate = new SqlParameter("from", searchParams.From.ToString("yyyy-MM-dd"));
        SqlParameter toDate = new SqlParameter("to", searchParams.To.ToString("yyyy-MM-dd"));
        string sqlQuery = "exec procedure @from, @to";

        var data = Query<dynamic>()
                   .FromSql(sqlQuery, fromDate, toDate);
                   .ToList();

        return data;
    }
}

在此示例中,“序列不包含元素”出现错误。如果我在 SQL Server 上运行该过程,它运行没有问题。

标签: c#entity-frameworkasp.net-core

解决方案


推荐阅读