。NET Core Web API SQL Server存储过程

问题描述 投票:0回答:1

我正在尝试创建.NET Core Web Rest API来将Infopath表单连接到它。我的想法是从表单捕获数据并将其存储到SQL Server,因为除了插入表之外,我还想做一些复杂的事情,所以我想使用存储过程。我还想查询一些信息到表格或/和一些报告。

问题是,我不知道这是否是正确的方法。

这是我的测试控制器:

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仅按主键搜索。我要发送日期范围,名称,ID和日期范围等。

有人可以引导我朝正确的方向吗?

.net sql-server api asp.net-core-mvc infopath
1个回答
0
投票

您可以在EF内核中使用FromSqlRaw来调用存储过程,如下所示:

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

动作:

var baseItem = _context.BaseItems.FromSqlRaw("Execute dbo.GetBaseItems @id = {0} ,@name = {1}", id, "itemName");
© www.soinside.com 2019 - 2024. All rights reserved.