使用Dapper执行Insert语句

时间:2015-01-23 23:21:07

标签: c# dapper insert-into

我试图在下面的帖子和评论

中使用@MarcGravell解释的方法

How to insert a C# List to database using Dapper.NET

我想从

开始
        string sql2 = string.Format(@"INSERT INTO #cusipSedolList (cusipSedol) values (@A)");

        IDbConnection con = new SqlConnection(_connectionString);

        using (con)
        {
            con.Open();
            foreach (var cusipSedol in cusipSedolsParameter)
            {
                con.Execute(sql2, new { A = cusipSedol.CusipSedol });
            }

        }

        string sql2 = string.Format(@"INSERT INTO #cusipSedolList (cusipSedol) values (@CusipSedol)");

        IDbConnection con = new SqlConnection(_connectionString);

        using (con)
        {
            con.Open();
            con.Execute(sql2, new {cusipSedolsParameter});

        }

       var cusipSedolsParameter = new List<CusipSedols>();

       public class CusipSedols
       {
           public string CusipSedol { get; set; }
       }

但我收到的错误是,如果它有多个CusipSedol,我必须声明@CusipSedol。

1 个答案:

答案 0 :(得分:2)

在第二个示例中,传递参数new {cusipSedolsParameter},它是一个匿名类型对象,其中包含一个名为cusipSedolsParameter的成员。

相反,您只想传递清单。你的电话应该是这样的:

con.Execute(sql2, cusipSedolsParameter);

然后Dapper会枚举您的列表并对每个条目执行查询,并根据条目类型的属性匹配查询参数。