Как получить данные Dynami c из хранимой процедуры - PullRequest
0 голосов
/ 13 января 2020

Я использую Entitiy Framework Core и хочу получить динамические c данные из моих хранимых процедур. Например:

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

Я не знаю, какие пары ключ-значение поступают из базы данных, и мне не нужно знать это для моей бизнес-логики c. Есть ли способ получить динамические данные c из хранимых процедур? Я попробовал следующее, но это не сработало.

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, она запускается без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...