Stored procedures 如何在Dapper中插入后读取选择

Stored procedures 如何在Dapper中插入后读取选择,stored-procedures,dapper,Stored Procedures,Dapper,我是个衣冠楚楚的新手。我正在尝试对我的StoredProcess进行验证。下面是我的代码: 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 b

我是个衣冠楚楚的新手。我正在尝试对我的StoredProcess进行验证。下面是我的代码:

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
这是我的密码。这就是我被困的地方。我不知道插入后如何使用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);
    }
}

我想消费例如:“选择1,成功!”?在我的应用程序中,如果第一列为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;
var output=wait conn.QueryFirstAsync(“EXEC p_blzr_Video_Insert@Title,@DatePublished,@IsActive”,参数);
var returnId=(int)output.returnId;
var returnMessage=(字符串)output.returnMessage;

这使用
query
方法读取存储过程的结果和动态结果,因此您不需要创建类。

Tnx用于应答。我在output.ReturnId和output.ReturnMessage.Edited上得到了一条红色的曲线。在output.ReturnId和output.ReturnMessage.Minor提示:对于这样的简单查询,值元组(按位置,而不是按名称)比动态API更有效,因此:
(var id,var msg)=wait conn.querysync(…)嗨@MarcGravel我用(var id,var msg)得到了红色的曲线。@Oliver当你在曲线上悬停时IDE会说什么?