【问题标题】:Multiple row insertion in asp.net core with dapper package带有dapper包的asp.net核心中的多行插入
【发布时间】:2019-06-25 06:37:11
【问题描述】:

我想在使用 dapper 包的 asp.net 核心中执行多行插入。这里我使用了一个模型类、控制器和另一个类。存储在数据库中的结果是一个从列表转换的数据表。这里我使用了带类型的存储过程。

public class PlanDetailsInputModel
{
    public int MembershipPlanDetailsId { get; set; }
    public int MembershipPlanId { get; set; }
    public int CreatedBy { get; set; }
    public string Flag { get; set; }
    public List<dtPlanFeatureListModel> dtPricePlanDetails { get; set; }
}

public class dtPlanFeatureListModel
{
    public long PricePlanFeatureId { get; set; }
}

这是我的模型课。帮我创建我的控制器和函数。

【问题讨论】:

    标签: asp.net-core dapper


    【解决方案1】:

    如果您有一个插入语句和一个与插入语句的字段匹配的对象列表,您可以执行以下操作。

    public void UpdateDB()
    {
        List<Entity> entities = null;
    
        entities = GetData();
    
        var sql = @"INSERT INTO TABLE_01 ( Id, FieldA, FieldB ) VALUES ( @id, @FieldA, @Fieldb )";
    
        using (var conn = (IDbConnection) GetDatabaseConnection())
        {
            if (conn.State == System.Data.ConnectionState.Closed)
                conn.Open();
    
            using (var tx = conn.BeginTransaction())
            {
                //conn.Execute
                conn.Execute(sql, entities, tx);
                tx.Commit();
            }
        }
    
    }
    

    上面的代码将遍历实体中的所有行并执行插入语句。如果您忽略事务,那么它将在每次插入后提交。但是你包含事务,它会在插入所有行后提交。

    你可以找到更多关于它here

    虽然,您的问题并未说明将插入哪个类。我不认为 Dapper 可以处理带有 List 的类 PlanDetailsInputModel 。您必须将其展平为 DTO 类,并在 Dapper 命令中使用该 DTO 类,或者使用两个 dapper insert 命令。一个用于 PlanDetailsInputModel,另一个用于 dtPlanFeatureListModel 列表。

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 2017-07-17
      • 2018-10-05
      相关资源
      最近更新 更多