我无法使用EF Core进行POST

时间:2018-04-20 18:20:44

标签: sql post entity-framework-core

带有新问题,这是因为使用Entity框架核心web api我无法执行POST请求。但是如果我在Sql Server中编写相同的句子就可以了。

这是我的帖子:

     public IActionResult PostEstacion([FromBody]PostEstacionDTO postEstacionDTO) {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }
        var EntidadID = _context.Empresa.Where(x => x.EntidadID == postEstacionDTO.EntidadID).Select(x => x.EntidadID).FirstOrDefault();
        var NumeroEstacion = _context.Estacion.Where(x => x.NumeroEstacion == postEstacionDTO.NumeroEstacion).Select(x => x.NumeroEstacion).FirstOrDefault();
        var Clave = _context.Estacion.Where(x => x.Clave == postEstacionDTO.Clave).Select(x => x.Clave).FirstOrDefault();
        var TarID = _context.Estacion.Where(x => x.TarID == postEstacionDTO.TarID).Select(x => x.TarID).FirstOrDefault();
        var postEstacion = _context.LoadStoredProc("PostEmpresaEstacion")
            .WithSqlParam("p0", EntidadID)
            .WithSqlParam("p2", NumeroEstacion)
            .WithSqlParam("p3", Clave)
            .WithSqlParam("p4", TarID)
            .ExecuteStoredProc<PostEstacionDTO>();

        return Created();
    }

我使用一个类从SQL Server执行SP,在另一个Post请求中它可以工作,但这里不是。

例如,如果我调试:

这是我的SP:

    [dbo].[PostEmpresaEstacion]
@p0 int,
@p2 varchar (max),
@p3 varchar (max),
@p4 int
as
begin
insert into Empresa(EntidadID) values (@p0)
SELECT P1 = SCOPE_IDENTITY()

insert into Estacion(EmpresaID, NumeroEstacion, Clave, TarID) values (SCOPE_IDENTITY(), @p2, @p3, @p4)

end

这是我的Postman POST请求

enter image description here

最后我的SP查询:

    declare @p0 int,
 @p2 varchar (max),
@p3 varchar (max),
@p4 int

set @p0 = 1
set @p2 = 'ZXSQ12'
set @p3 = 'OPIIU7'
set @p4 = 1

begin
insert into Empresa(EntidadID) values (@p0)
SELECT P1 = SCOPE_IDENTITY()

insert into Estacion(EmpresaID, NumeroEstacion, Clave, TarID) values (SCOPE_IDENTITY(), @p2, @p3, @p4)

end

正如我所说,它在Sql Server中运行良好。

当我在Visual Studio中调试时:

  • EntidadID = 1
  • NumeroEstacion = null
  • Clave = null
  • TarID = 2

只有“NumeroEstacion”和“Clave”为空,我不知道为什么,如果我将变量声明为其他变量。

我将非常感谢您的帮助

0 个答案:

没有答案