Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在POST方法中调用实体框架核心中存储过程的返回值?_C#_Sql Server_Entity Framework_Stored Procedures_Entity Framework Core - Fatal编程技术网

C# 如何在POST方法中调用实体框架核心中存储过程的返回值?

C# 如何在POST方法中调用实体框架核心中存储过程的返回值?,c#,sql-server,entity-framework,stored-procedures,entity-framework-core,C#,Sql Server,Entity Framework,Stored Procedures,Entity Framework Core,我使用的是EF Core 3.1。这是我的存储过程的片段,不允许我对其进行任何更改。基本上,只需使用EF Core将参数传递到SP并显示返回值 ALTER PROCEDURE [dbo].[LOG_DELIVERY_ORDER] @Company varchar(50), @Company_Name varchar(50), @Customer_Code varchar(50), @Customer_Name varchar(50), @Customer_

我使用的是EF Core 3.1。这是我的存储过程的片段,不允许我对其进行任何更改。基本上,只需使用EF Core将参数传递到SP并显示返回值

ALTER PROCEDURE [dbo].[LOG_DELIVERY_ORDER]
    @Company varchar(50),
    @Company_Name varchar(50),
    @Customer_Code varchar(50),
    @Customer_Name varchar(50),
    @Customer_Address varchar(max),
    @DO_No varchar(50),
    @Invoice_No varchar(50),
    @Account_No varchar(50),
    @Van_Code varchar(50),
    @Salesperson varchar(50),
    @Total_Quantity_Loaded int,
    @Date_Created datetime,
    @Created_By int,
    @Location_Created varchar(50)
AS
BEGIN
    (the rest) 

    IF @@ERROR=0
        SELECT @@IDENTITY AS result
    ELSE
        SELECT 0
END
这是执行后的预期回报:

插入参数后,存储过程将返回在“结果”列中生成的最新ID

我的模型:

public partial class LogDeliveryOrder
{
    public string CompanyName { get; set; }
    public string CustomerCode { get; set; }
    public string CustomerName { get; set; }
    public string CustomerAddress { get; set; }
    public string DoNo { get; set; }
    public string InvoiceNo { get; set; }
    public string AccountNo { get; set; }
    public string VanCode { get; set; }
    public string Salesperson { get; set; }
    public int TotalQuantityLoaded { get; set; }
    public string DateCreated { get; set; }
    public int CreatedBy { get; set; }
    public string LocationCreated { get; set; }
    public string LocationModified { get; set; }

    public int result { get; set; }
}
我的实体:

 modelBuilder.Entity<LogDeliveryOrder>(entity =>
        {
            entity.HasNoKey();
            entity.Property(e => e.AccountNo);
            entity.Property(e => e.CompanyName);
            entity.Property(e => e.CreatedBy);
            entity.Property(e => e.CustomerAddress);
            entity.Property(e => e.CustomerCode);
            entity.Property(e => e.CustomerName);
            entity.Property(e => e.DateCreated);
            entity.Property(e => e.DoNo);
            entity.Property(e => e.InvoiceNo);
            entity.Property(e => e.LocationCreated);
            entity.Property(e => e.LocationModified);
            entity.Property(e => e.Salesperson);
            entity.Property(e => e.TotalQuantityLoaded);
            entity.Property(e => e.VanCode);

            entity.Property(e => e.result);
        });
但当我尝试将参数插入存储过程时,它会抛出以下错误:

System.InvalidOperationException:“FromSql”操作的结果中不存在必需的列“AccountNo”


但是,我不希望结果中出现
AccountNo
。我只希望返回“result”列。但是,存储过程已成功执行。参数没有插入到表中。但是,我仍然无法检索'result'列和ID。我已经为'result'创建了类和实体。如何检索它?

在FromSql调用中使用结果类。如何使用该类?您的意思是“var storedProcedure=context.Resultclass.FromSqlRaw(sql.ToList();”像这样??我是ef core的新手。谢谢你的帮助是的,就是这样!
[HttpPost("LogDeliveryOrder")]
public IActionResult LogDeliveryOrder([FromBody] LogDeliveryOrder deliveryOrder) 
{
        using (LogDeliveryContext context = new LogDeliveryContext())
        {
            string sql = $"exec [dbo].[KLCONNECT_LOG_DELIVERY_ORDER_INS_210501] " +
                        $"@Company = '{deliveryOrder.CompanyName}', " +
                        $"@Company_Name = '{deliveryOrder.CompanyName}', " +
                        $"@Customer_Code = '{deliveryOrder.CustomerCode}', " +
                        $"@Customer_Name = '{deliveryOrder.CustomerName}', " +
                        $"@Customer_Address = '{deliveryOrder.CustomerAddress}', " +
                        $"@DO_No = '{deliveryOrder.DoNo}', " +
                        $"@Invoice_No = '{deliveryOrder.InvoiceNo}', " +
                        $"@Account_No = '{deliveryOrder.AccountNo}', " +
                        $"@Van_Code = '{deliveryOrder.VanCode}', " +
                        $"@Salesperson = '{deliveryOrder.Salesperson}', " +
                        $"@Total_Quantity_Loaded = {deliveryOrder.TotalQuantityLoaded}, " +
                        $"@Date_Created = '{deliveryOrder.DateCreated}', " +
                        $"@Created_By = {deliveryOrder.CreatedBy}, " +
                        $"@Location_Created = '{deliveryOrder.LocationCreated}' ";
            
            var storedProcedure = context.LogDeliveryOrders.FromSqlRaw(sql).ToList();
         
            return Ok(storedProcedure);
        }
}