0

我(在最后阶段)创建了一个需要数据库通信的 ASP.NET 网站,因此我们创建了 WCF 服务来连接到数据库。如果存在 Select 语句,这些服务将返回 DataTable。

服务运行良好,网站也运行良好

在创建 API 时,我不知道 windows phone sdk 不支持 DataTables。

我读了一些 Windows Phone SDK 不支持 DataTable 的地方,我在我的 Visual Studio 中检查了System.Data命名空间中也没有名为 DataTable 的类。

我是 Windows Phone 新手。

但是现在我们想创建一个和网站一样工作的WINDOWS PHONE APP,所以我们想使用现有的API(WCF服务)。

有什么办法可以完成这个任务。most of the methods return type is DataTable.

我们不想创建两个 API(意味着服务)。我该怎么办?

如何创建适用于 Windows Phone 和网站的服务。

我们准备好更改更改 API 并根据该准备更新网站了吗?

谢谢

4

2 回答 2

1

只是将 API 更改为 returnStream而不是DataTable

 System.IO.StringWriter reader = new System.IO.StringWriter();
 dt.WriteXml(reader, XmlWriteMode.WriteSchema);//dt is datatable
 return reader;

在网站的小改动中,读取流并将其分配给datatable

    StringReader xmlReader = new StringReader(stream);
    DataTable dt = new DataTable();
    dt.ReadXml(xmlReader);

更新:

这种方法不建议使用(这是我的第一个 Web 服务应用程序),我建议使用 JSON/XML 响应(带有返回DTOs)而不是返回DataTable..

以下链接可能会让您朝着正确的方向前进。

http://www.codeproject.com/Articles/105273/Create-RESTful-WCF-Service-API-Step-By-Step-Guide http://mono.servicestack.net/ServiceStack.Hello/

于 2012-06-06T07:52:50.087 回答
0

不知道你为什么使用数据表。你是说数据集吗?

它们都是隐藏的 XML。尝试解析它们。尝试这样的事情:

    var resultNewDataSet = XElement.Parse(xmlContent);

    var result = resultNewDataSet.Descendants("Table")
        .Select(t => new
            {
                aaa = t.Descendants("aaa").First().Value,
                bbb = t.Descendants("bbb").First().Value
            });

    foreach (var res in result)
    {
        System.Diagnostics.Debug.WriteLine("aaa: " + res.aaa + " / bbb: " + res.bbb);
    }
于 2012-06-02T14:37:05.950 回答