使用存储过程插入项目

时间:2018-01-09 22:24:18

标签: sql asp.net-web-api .net-core dapper

我是ASP.NET的新手,我想知道是否有人可以解释Insert如何使用存储过程工作。我正在使用Dapper。

我有这样的产品型号:

using Dapper.Contrib.Extensions;
using System;

namespace Dto.Entities.Products
{
    [Table("Product.ProductDetail")]
    public class ProductDetail
    {
        [Key]
        public int ProductDetailId { get; set; }
        public int ProductId { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}

现在可以有人解释我如何使用存储过程在控制器中插入?此致

1 个答案:

答案 0 :(得分:1)

最快的方法是按照你的说法处理控制器中的所有逻辑:

[HttpPost]
public async Task<IHttpActionResult> Post([FromBody]ProductDetail payload)
{
    using (var connection = new SqlConnection("<your_connectionstring>"))
    {
        var parameters = new
        {
            ProductId = payload.ProductId,
            Name = payload.Name,
            Description = payload.Description
        };

        await connection.ExecuteAsync("<your_insert_sp>", parameters, commandType: CommandType.StoredProcedure).ConfigureAwait(false);
    }

    return Ok();
}

这不是推荐的方法。

您应始终使用dto类而不是真实数据模型作为进入或离开控制器的类型。

此外,db逻辑应移出控制器之外,例如移动到存储库类。或者,您可以使用Mediatr将您的逻辑从您的操作中移开,并保留您的控制器thin