Как вызвать DAO из строки запроса SQL в C# - PullRequest
1 голос
/ 01 апреля 2020

Я знаю, что в Springboot вы можете вызывать DAO напрямую из строки sql.

IE

SqlQuery = "
  SELECT new com.testProject.model.testDAO(test.country, test.code, sum(case when test.dummy1  = 'POS' then 1 else 0 end), sum(case when test.dummy2 = 'POS' then 1 else 0 end))
  FROM test";

Но возможно вызвать DAO из строки Sql в C#? Я удалил DAO из запроса, чтобы он работал:

SqlQuery = "
  SELECT test.country, test.code, sum(test.dummy1 = 'POS' ? 1 : 0) as dumm1, sum(test.dummy2 = 'POS' ? 1 : 0) as dummy2
  FROM test";

Есть ли способ вызвать DAO внутри SQL строки запроса?

1 Ответ

1 голос
/ 08 апреля 2020

Поскольку вы сказали, что используете azure http триггер с вводом cosmos db, в моем знании не существует такого механизма DAO, как пружинная загрузка с параметром строки запроса в вводе cosmos db.

Однако на основе примера , предоставленного во входном документе Azure Функция Cosmos Db, он поддерживает использование пользовательского класса объектов для сопоставления результата запроса с sql. Пожалуйста, обратитесь к моему тесту:

Пример данных в космосе, дБ:

enter image description here

Azure Код функции:

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Collections.Generic;

namespace CosmosTriggerCore
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            [CosmosDB(
                databaseName: "db",
                collectionName: "coll",
                ConnectionStringSetting = "cosmosdbstring",
                SqlQuery = "SELECT top 2 * FROM c")]
                IEnumerable<TestDoc> testDocItems,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            foreach (TestDoc doc in testDocItems)
            {
                log.LogInformation(doc.Id);
                log.LogInformation(doc.Name);
            }
            return new OkResult();
        }
    }

    public class TestDoc
    {
        public string Id { get; set; }
        public string Name { get; set; }
    }
}

Я использовал TestDoc Класс, чтобы принять результат запроса, и я могу получить доступ к свойствам в коде.

enter image description here

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