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

时间:2014-08-11 14:32:58

标签: c#

我从数据库中的存储过程中获取数据表,然后转换为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;

不起作用。欢迎任何想法。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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