2

我有一个用于查询用户定义数据库的 API 的包装库。它目前使用 DataSet、DataTable、DataRow 等运行良好。我想将其转换为可移植库以在其他平台上使用,但这些类不是可移植子集的一部分。

有什么东西可以远程等同于这些课程吗?我的库对 DataSet 所做的主要事情是将数据传输到填充业务对象的域层。

我需要的是一种将数据库表的任意表示从我的库传递到调用我的库的程序的方法,该程序适用于某种形式的可移植库,理想情况下是所有子集(不需要 Xbox),但任何东西都比我什么都好现在有。

背景

这是我正在努力解决的数据流

User Defined Database <==> My Library <==> User C# Code

可用的 API 很粗糙。我的库使查询变得更加容易,但由于我在设计时对结构一无所知,所以我解析从 API 返回的数据并将其放入 DataSet 对象中。最终用户解析这些数据集以填充其域对象。我正在寻找的是一种在没有数据集的情况下为可移植库执行此操作的方法。

我的库的使用示例,这也是使用的 DataSet/Table/Row 的功能范围:

var myLib = new MyLib(parms);
Find request = myLib.MakeFind();
request.AddSearch("userID", 12);
DataSet response = request.Execute()

var user = new User();
user.ID = int.Parse(response.Tables[0].Rows[0]["userID"].ToString());
user.FirstName = response.Tables[0].Rows[0]["FIRST_NAME"].ToString();
user.LastName = response.Tables[0].Rows[0]["LAST_NAME"].ToString();

foreach (DataRow relatedRow in dr.GetChildRows("Logs"))
{
    var lg = new LogEntry() { ID = int.ParserelatedRow["ID"].ToString()), Text = relatedRow["Text"].ToString(); };
    user.Logs.Add(lg);
}
4

1 回答 1

2

我建议使用基本序列化(XML/JSON)——它使数据具有可移植性,并且几乎可以在您能想到的任何平台上使用。XML 可能比 JSON 稍微常见一些,但您始终可以采用 WebAPI 所做的方法 - 让调用者决定他们想要两者中的哪一个,如果他们不选择一个,则默认使用 XML。

将数据序列化/反序列化为 XML 或 JSON 在 .NET 中是微不足道的,假设您没有做任何太疯狂的事情。在其他平台上反序列化应该很简单,但是您可以通过快速的网络搜索为任何编程环境挖掘示例。

于 2013-06-17T21:40:50.990 回答