1

我有两个应用程序:第一个使用 SqlKata 从数据库中获取数据,然后使用 Newtonsoft 对其进行序列化并将其保存到文件中:

  SqlServerCompiler compiler = new SqlServerCompiler();
                QueryFactory queryFactory = new QueryFactory(MyConnection,compiler);
                 var data = queryFactory.Query("tblName").Where("ID",1).First();
                string json = JsonConvert.SerializeObject(data);
                StreamWriter writer = new ...
                writer.write(json);

这工作正常,并使用其中的数据创建 json 文件
第二个应用程序读取 JSON 文件,对其进行反序列化,然后将其添加到数据库中,例如:

  using(StreamReader streamReader = new StreamReader(@"C:/MyFile")){
    string temp = streamReader.ReadToEnd();
    var toInsert = JsonConvert.DeserializeObject(temp);
    //note that i dont have a class that represents the structure of the deserialized object,thus i should catch it dynamically
    queryFactory.Query("tblName").Insert(toInsert);
}

插入会引发异常:System.Reflection.TargetParameterCountException: 'Parameter Count Mismatch'

知道数据库表是一样的。

4

1 回答 1

1

如果没有类,可以使用动态类型。动态类型在编译时逃避类型检查;相反,它在运行时解析类型。

尝试这个:

 var toInsert = JsonConvert.DeserializeObject<dynamic>(temp);
于 2019-05-16T06:49:18.590 回答