无法在 dapper 中获取输出参数(插入行的 id)

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

我正在尝试通过 dapper 插入一行,并将插入行的 id 作为输出参数。 但是,我在 System.Private.CoreLib.dll 中收到 NullReferenceExcepteion。

这是我的 C# 代码:

                    public async Task CreatePrintFile(IPrintFileModel printFile, int productId, int quantity)
        {
            var p = new DynamicParameters();
            
                p.Add("@Name", printFile.Name);
                p.Add("@FileName", printFile.FileName);
                p.Add("@PrintPresetId", printFile.PrintPresetId);
                p.Add("@Annotation", printFile.Annotation);
                p.Add("@InsertedId", dbType: DbType.Int32, direction: ParameterDirection.Output);

            await _dataAccess.SaveData("dbo.spPrintFile_Create", p, "chHome");
            int insertedId = p.Get<int>("@InsertedId");
            //await CreatePrintFile2PrintProductRecord(insertedId,productId,quantity);
        }

和我正在尝试使用的存储过程:

CREATE PROCEDURE [dbo].[spPrintFile_Create]
    @Name nchar(255),
    @FileName nchar(255),
    @PrintPresetId int,
    @Annotation nchar(255),
    @InsertedId int output
AS
begin
    set nocount on;

    insert into dbo.PrintFile(Name,FileName,PrintPresetId,Annotation)
    output inserted.Id
    values (@Name,@FileName,@PrintPresetId,@Annotation)
    SET @InsertedId = SCOPE_IDENTITY();
end

 public async Task SaveDataAsync<T>(string storedProcedure, T parameters, string connectionStringName)
    {
        string connectionString = _config.GetConnectionString(connectionStringName);
        try
        {
            using (IDbConnection connection = new SqlConnection(connectionString))
            {

                await connection.ExecuteAsync(storedProcedure, parameters,
                    commandType: CommandType.StoredProcedure);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
            
        }
        
    }
c# sql-server dapper
© www.soinside.com 2019 - 2024. All rights reserved.