将xml转换为数据表的存储过程类型

本文关键字:存储过程 类型 数据表 xml 转换 | 更新日期: 2023-09-27 18:17:23

我从数据库的存储过程中获得一个数据表,然后转换为xml并存储在设置文件中。

dsTableAdapters.usp_GetMyDataTableAdapter taMyData = new dsTableAdapters.usp_GetMyDataTableAdapter();
ds.usp_GetMyDataDataTable dtMyData  = taMyData.GetData();
string xmlMyData;
using (StringWriter sw = new StringWriter())
{
    dtMyData.WriteXml(sw);
    xmlMyData = sw.ToString();
}

这很好。

单独(如果用户不在线)我想读取设置文件并使用这个代替。我可以通过

将数据放入标准数据表中
StringReader theReader = new StringReader(xmlMyData);
DataSet theDataSet = new DataSet();
theDataSet.ReadXml(theReader);
DataTable mydt = theDataSet.Tables[0];

但是我的问题是不能将其转换为ds。usp_GetMyDataDataTable类型数据表。做

dtMyData = (ds.usp_GetMyDataDataTable)mydt;

是行不通的。

将xml转换为数据表的存储过程类型

您应该创建类型列表,而不是传递特定于过程的结果集对象。您所经历的是为什么要创建实体或域对象来存储可以从各种来源填充的数据。

无论如何,你的问题没有明显的快速答案,你的问题基本上是问为什么不将DataTable转换为你创建的自定义类,原因是因为它们是2个完全不同的类。

我最终能够让它工作。把答案放在这里,以防其他人感兴趣尽管你可能想接受T McKeown的建议,我不应该这样做

dtMyData = new ds.usp_GetMyDataDataTable();
StringReader theReader = new StringReader(Properties.Settings.Default.MyData);
dtMyData.ReadXml(theReader);