【发布时间】:2014-06-18 20:37:04
【问题描述】:
我在代码中有一个 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 个永久列“名称”、“日期”和“源”,并且可以在运行时更改多个字段列,并且可以创建具有更多列的表。
我需要将上面的 DataTable 存储在 DB 中的一个表中,例如
ColumnName Name |Date |Source|Fields
Type of string|DateTime|String|XML
如何有效地序列化字段列并通过存储过程将其发送到数据库中,以便一次保存多个名称和日期。
我还需要在代码中对上表进行缓存,以便我们可以快速访问数据。我正在考虑使用
Dictionary< Name +Date+Source,< Dictionary< fieldName,fieldValue>>
您能否提出实现上述目标的方法
【问题讨论】:
-
如果你将你的dataTable转换成XML,然后将它传递给参数中的存储过程。现在该参数的类型是 varchar(max) 还是 XML,由您决定。如果您在 varchar 中传递它,那么在 SP 中您必须将其转换为 XML 数据类型,然后读取 XML 并获取标签值并根据您的 SP 中的要求插入到您的表中。您可以使用 DataTable 的 WriteXml() 方法将 dataTable 的内容转换为 XML。
标签: c# sql-server xml datatable linq-to-xml