代码之家  ›  专栏  ›  技术社区  ›  user9065477

使用存储过程插入项

  •  0
  • user9065477  · 技术社区  · 6 年前

    我是ASP的新手。我想知道有没有人能解释一下 Insert 使用存储过程工作。我在用整洁的衣服。

    我有一个这样的产品模型:

    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 回复  |  直到 6 年前
        1
  •  1
  •   peco    6 年前

    最快的方法是处理控制器中的所有逻辑,如您所说:

    [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 类而不是实际数据模型作为进入或离开控制器的类型。

    此外,数据库逻辑还应移到控制器之外,例如移到存储库类。或者你可以使用 Mediatr 把你的逻辑从你的行动中移开,并保留你的控制器 thin .