如何在 Dapper 中插入后读取 SELECT
How to read SELECT after INSERT in Dapper
我是 dapper 的新手。我正在尝试对我的存储过程进行验证。以下是我的代码:
USE [DapperDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_blzr_Video_Insert]
@Title varchar(128),
@DatePublished date,
@IsActive bit
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT Title FROM Video WHERE Title = @Title)
BEGIN
SELECT 0 as ReturnID, 'Title is already in the database. Please check your data entry' as ReturnMessage;
END
ELSE
BEGIN
INSERT INTO Video
(
Title,
DatePublished,
IsActive
)
VALUES
(
@Title,
@DatePublished,
@IsActive
)
SELECT 1 as ReturnID, 'Success' as ReturnMessage;
END
END
这是我的 C# 代码。这就是我被卡住的地方。我不知道如何在插入后使用 Select 语句。
//Add (Create/Insert)
public async Task VideoInsert(Video video)
{
var result = new ResultFromSP();
using (var conn = new SqlConnection(_configuration.Value))
{
var parameters = new DynamicParameters();
parameters.Add("Title", video.Title, DbType.String);
parameters.Add("DatePublished", video.DatePublished, DbType.DateTime);
parameters.Add("isActive", video.isActive, DbType.Boolean);
//Stored Proc
await conn.ExecuteAsync("sp_blzr_Video_Insert", parameters, commandType:CommandType.StoredProcedure);
}
}
我想消费 ex: "'SELECT 1, 'Success!'"?在我的应用程序中,如果第一列是 1,则表示插入成功。之后我会提示插入“成功”。
您可以将执行更改为
var output = await conn.QueryFirstAsync<dynamic>(“EXEC p_blzr_Video_Insert @Title, @DatePublished, @IsActive”, parameters);
var returnId = (int) output.ReturnID;
var returnMessage = (string) output.ReturnMessage;
这使用query
方法读取存储过程的结果和动态结果,因此您不需要创建class。
我是 dapper 的新手。我正在尝试对我的存储过程进行验证。以下是我的代码:
USE [DapperDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_blzr_Video_Insert]
@Title varchar(128),
@DatePublished date,
@IsActive bit
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS(SELECT Title FROM Video WHERE Title = @Title)
BEGIN
SELECT 0 as ReturnID, 'Title is already in the database. Please check your data entry' as ReturnMessage;
END
ELSE
BEGIN
INSERT INTO Video
(
Title,
DatePublished,
IsActive
)
VALUES
(
@Title,
@DatePublished,
@IsActive
)
SELECT 1 as ReturnID, 'Success' as ReturnMessage;
END
END
这是我的 C# 代码。这就是我被卡住的地方。我不知道如何在插入后使用 Select 语句。
//Add (Create/Insert)
public async Task VideoInsert(Video video)
{
var result = new ResultFromSP();
using (var conn = new SqlConnection(_configuration.Value))
{
var parameters = new DynamicParameters();
parameters.Add("Title", video.Title, DbType.String);
parameters.Add("DatePublished", video.DatePublished, DbType.DateTime);
parameters.Add("isActive", video.isActive, DbType.Boolean);
//Stored Proc
await conn.ExecuteAsync("sp_blzr_Video_Insert", parameters, commandType:CommandType.StoredProcedure);
}
}
我想消费 ex: "'SELECT 1, 'Success!'"?在我的应用程序中,如果第一列是 1,则表示插入成功。之后我会提示插入“成功”。
您可以将执行更改为
var output = await conn.QueryFirstAsync<dynamic>(“EXEC p_blzr_Video_Insert @Title, @DatePublished, @IsActive”, parameters);
var returnId = (int) output.ReturnID;
var returnMessage = (string) output.ReturnMessage;
这使用query
方法读取存储过程的结果和动态结果,因此您不需要创建class。