. NET Core Web API SQL Серверные хранимые процедуры - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь создать. NET Core Web Rest API для подключения форм Infopath к нему. Идея, которая у меня есть, заключается в том, чтобы собирать данные из формы и сохранять их на SQL сервере, поскольку я хочу сделать некоторые сложные вещи, помимо простой вставки в таблицу, я хотел бы использовать хранимые процедуры. Я также хотел бы запросить некоторую информацию для форм или / и некоторых отчетов.

Вопрос в том, что я не знаю, правильный ли это подход.

Это мой тестовый контроллер:

using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using ct3PR.Models;

namespace ct3PR.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class BaseController : ControllerBase
    {
        private readonly baseContext _context;

        public BaseController(baseContext context) => _context = context;

        [HttpGet("{id}")]
        public ActionResult<Base> GetBasesItem(int id)
        {
            var baseItem = _context.BaseItems.Find(id);

            if(baseItem == null)
            {
                return NotFound();
            }

            return baseItem;
        }
    }
}

У меня уже есть тестовая база данных, из которой я могу запросить:

var baseItem = _context.BaseItems.Find(id);

Проблема в том, что я хочу отправить параметры хранимой процедуры, но Find выполняет поиск только по первичному ключу. Я хочу отправить диапазон дат, имя, идентификатор и диапазон дат и т. Д. c.

Может ли кто-нибудь направить меня в правильном направлении?

1 Ответ

0 голосов
/ 27 марта 2020

Вы можете использовать FromSqlRaw в ядре EF для вызова хранимой процедуры следующим образом:

CREATE PROCEDURE [dbo].[GetBaseItems]
@id int = 0,
@name varchar(50)

Действие:

var baseItem = _context.BaseItems.FromSqlRaw("Execute dbo.GetBaseItems @id = {0} ,@name = {1}", id, "itemName");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...