2

ユーザー定義データベースをクエリする API のラッパー ライブラリがあります。現在、DataSet、DataTable、DataRow などを使用してうまく機能しています。他のプラットフォームで使用するためにポータブル ライブラリに変換したいと考えていますが、これらのクラスはポータブル サブセットの一部ではありません。

これらのクラスとリモートでも同等のものはありますか? 私のライブラリが DataSet を使用して行う主な処理は、データをドメイン層に転送することです。これにより、ビジネス オブジェクトが生成されます。

私が必要としているのは、データベース テーブルの任意の表現をライブラリからライブラリを呼び出すプログラムに渡す方法です。このプログラムは、何らかの形のポータブル ライブラリ、理想的にはすべてのサブセット (Xbox は必要ありません) で動作しますが、何もないよりは何でも良いです。今持っています。

バックグラウンド

これは私が苦労しているデータフローです

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

利用可能な API は端が荒いです。ライブラリを使用するとクエリがはるかに簡単になりますが、設計時には構造について何もわからないため、API から返されたデータを解析し、それを DataSet オブジェクトに入れます。エンド ユーザーは、これらの DataSet を解析して、ドメイン オブジェクトを設定します。私が探しているのは、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 が行うアプローチをいつでも取ることができます。呼び出し元に 2 つのうちどちらが必要かを決定させ、どちらかを選択しない場合はデフォルトで XML にします。

データを XML または JSON にシリアライズ/デシリアライズすることは、.NET では簡単なことです。他のプラットフォームでのデシリアライズは簡単なはずですが、Web 検索を行うだけで、あらゆるプログラミング環境の例を掘り起こすことができるでしょう。

于 2013-06-17T21:40:50.990 に答える