C# 使用dapper将作业对象列表插入SQL Server

C# 使用dapper将作业对象列表插入SQL Server,c#,json,sql-server,tsql,dapper,C#,Json,Sql Server,Tsql,Dapper,我需要将我的JObject的结果插入SQL数据库。但是它一直说我不能插入数组,列表 我做错了什么 到目前为止,我得到的是: JArray jsonArray = JArray.Parse(sb.ToString()); var jsonObjects = jsonArray.OfType<JObject>().ToList(); using (SqlConnection connection = new SqlConnection(connectionstring))

我需要将我的
JObject
的结果插入
SQL数据库
。但是它一直说我不能插入数组,列表

我做错了什么

到目前为止,我得到的是:

JArray jsonArray = JArray.Parse(sb.ToString());

var jsonObjects = jsonArray.OfType<JObject>().ToList();

     using (SqlConnection connection = new SqlConnection(connectionstring))
         {                    
             connection.Open();
             connection.Execute(@"Insert into dbo.JsonMeta values(@meta)", jsonObjects);                   
         }
错误:

Exception Type: System.InvalidOperationException
TargetSite: CacheInfo GetCacheInfo(Identity, System.Object, Boolean)
Message: An enumerable sequence of parameters (arrays, lists, etc) is not allowed in this context
Data: System.Collections.ListDictionaryInternal
HelpLink: NULL
Source: Dapper
HResult: -2146233079

这个问题可能需要更多的上下文,目前我们不知道您的数据库是什么或看起来像什么

例如,您是否正在使用MySQL并尝试将JSON存储为字符串? 或者您正在尝试将JSON对象存储到具有相同列数的表中

JArray jsonArray = JArray.Parse(sb.ToString());
var sb = new StringBuild("Insert into dbo.JsonMeta values");
for(int i =0; i < jsonArray.Length; i++)
{
  sb.AppendLine($"(@meta{i}),");
}
using (SqlConnection connection = new SqlConnection(connectionstring))
{                    
  connection.Open();
  connection.Execute(sb.ToString().TrimEnd(','), jsonArray.OfType<JObject>().Select(item => item.ToStirng()).ToArray());                   
}
JArray jsonArray=JArray.Parse(sb.ToString()); var sb=新的StringBuild(“插入dbo.JsonMeta值”); for(int i=0;iitem.tostirn()).ToArray()); } 支持插入项目列表

connection.Insert(jsonObjects);

当然,您必须提供适当的DTO。我不确定
JObject
是否符合条件。

仅作为字符串-不放入相同数量的列。标记不起作用。您需要对数组进行foreach并添加每个元素,然后将数组中的每个项添加到表中,请注意,您需要将数组转换为字符串。foreach是没有办法的?我刚刚写了这个“connection.Execute(@“Insert into dbo.JsonMeta values(@meta)”,新的{meta=jsonObjects.ToArray().ToString()});“第一次我没有得到一个错误,但它插入了这个记录”Newtonsoft.Json.Linq.JObjecet[]代替:D
connection.Insert(jsonObjects);