我正在尝试创建.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和日期范围等。
有人可以引导我朝正确的方向吗?
您可以在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");