我想在使用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; }
}
这是我的模型课。帮我创建控制器和函数。
答案 0 :(得分:0)
如果您有插入语句和与插入语句的字段匹配的对象列表,则可以执行以下操作。
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();
}
}
}
上面的代码将遍历实体中的所有行并执行insert语句。如果您忽略该事务,则它将在每次插入后提交。但是您包括了事务,它将在插入所有行之后提交。
您可以找到有关here的更多信息
尽管,您的问题并未说明将插入哪个类。我认为Dapper不能使用其中的List来处理您的PlanPlansInputModel类。您将不得不将其展平为DTO类,并在Dapper命令中使用该DTO类,或者使用两个dapper插入命令。一个用于PlanDetailsInputModel,另一个用于dtPlanFeatureListModel的列表。
HTH