Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将DataTable的几列序列化为xml并将其存储在数据库中的一列中_C#_Sql Server_Xml_Datatable_Linq To Xml - Fatal编程技术网

C# 将DataTable的几列序列化为xml并将其存储在数据库中的一列中

C# 将DataTable的几列序列化为xml并将其存储在数据库中的一列中,c#,sql-server,xml,datatable,linq-to-xml,C#,Sql Server,Xml,Datatable,Linq To Xml,我有一个DataTable,代码格式如下 DataSet ds = new DataSet("MyDataset"); DataTable dt = new DataTable("Data"); dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("Date", typeof(DateTime)); dt.Columns.Add("Source", typeo

我有一个DataTable,代码格式如下

        DataSet ds = new DataSet("MyDataset");
        DataTable dt = new DataTable("Data");
        dt.Columns.Add("Name", typeof(string));
        dt.Columns.Add("Date", typeof(DateTime));
        dt.Columns.Add("Source", typeof(string));
        dt.Columns.Add("Field1", typeof(String));
        dt.Columns.Add("Field2", typeof(String));
        //DataRow dr= dt.NewRow();
        dt.Rows.Add("ABC",DateTime.UtcNow,"Source1","10","11");
        dt.Rows.Add("CDE", DateTime.UtcNow, "Source2", "4", "5");
        dt.Rows.Add("FGH", DateTime.UtcNow, "Source1", "", "");
        ds.Tables.Add(dt);
也就是说,该表有3个永久列“Name”、“Date”和“Source”,多个字段列可以在运行时更改,并且可以创建具有更多列的表

我需要将上面的DataTable以DB的形式存储在如下表中

ColumnName  Name  |Date    |Source|Fields
Type of     string|DateTime|String|XML
如何高效地序列化字段列,并通过存储过程将其发送到数据库中,以便一次保存多个名称和日期

此外,我还需要在代码中为上面的表提供缓存,以便我们能够快速访问数据。我正在考虑使用

Dictionary< Name +Date+Source,< Dictionary< fieldName,fieldValue>> 

您可以建议实现上述功能的方法吗?您可以使用datatable的WriteXml方法从中获取相应的XML,然后在应用程序层上使用XPath并将三列作为参数传递给sp,或者在存储过程中使用XPath从XML中获取三列并删除它们,并在XML字段中删除其余部分,以从XML中删除名称、日期、源,而不是重复相同的数据两次


现在是缓存的事情。。字典将是好的,如果是现在,大量的数据只考虑那些在那里被访问的或者尝试从CHILPRESS库读取CHACE块。< /P>如果你把DATAATE转换成XML,然后将它传递给参数中的存储过程,那会怎么样呢?现在,该参数的类型可以是varcharmax或XML,由您决定。如果在varchar中传递,那么在SP中,您必须将其转换为XML数据类型,然后读取XML并获取标记值,然后根据SP中的要求插入到表中。您可以使用dataTable的WriteXml方法将dataTable的内容转换为XML。