我正在尝试通过 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());
}
}