2

私の状況では、販売/顧客データを含む SQL Server データベースに登録されている、自分で作成した C# DLL があります。今のところ、私は少し立ち往生しています。

DLL はリモート サーバーを呼び出してトークンを取得します。その後、トークンがデータベースに追加されます。理想的には、次のステップは、SQL サーバーから DLL にデータを取得し、DLL が取得したトークンを使用して、JSON ファイルをビルドし、リモート サーバーにポストすることです。

私が立ち往生しているのは、JSON ファイルだけの受信セクションに、さまざまなデータ型の 134 の要素があることです。C# DLL でそのすべてのデータを処理できるようにする必要があり、将来的には、投稿するために、この JSON ファイルにさらに多くのデータを取り込む必要があるかもしれません。私はいくつかの調査を行いましたが、ユーザー定義型 (UDT) の使用はうまく機能せず、私が知る限り、避けるべきオプションです。私が知っている他の 2 つのオプションは、XML にエクスポートして DLL で解析するか、134 以上の変数を作成して読み込むことです。

私の質問は、XML/ハードコーディング以外にこれを行う簡単な方法はありますか? 配列またはオブジェクトを使用する方法があれば理想的ですが、ここで読んだことによるとどちらもサポートされていないようです

ありがとうございました。

重要な注意: データベースと使用している JSON ライブラリのため、.Net Framework 2.0 で作業しています。

4

2 に答える 2

1

データは半構造化されているため、おそらく XML の使用に固執する必要があります。特に、スキーマが時間の経過とともに変化することがわかっている場合。SQL Server はまだOODBMSではありません。

于 2012-06-01T19:02:14.037 に答える
1

C# 側で XML シリアル化を使用することをお勧めします。データベース スキーマをモデル化するオブジェクトを作成します。

.NET 2.0 を使用しているため、オブジェクト指向の方法でデータベース スキーマをモデル化するための適切な基本クラスのセットが既にあります。null 許容の列であっても、null 許容のオブジェクトにマップして、メモリとネットワーク スペースを節約できます。

SQL 側から FOR XML 句を使用すると、クエリの出力が表形式から XML に変更されます。C# オブジェクトとまったく同じ階層で XML を作成する優れた SP を 1 つだけ作成する必要があります。

この XML は、クラスの名前と大文字と小文字、および c# クラスのプロパティと一致する必要があります。

次に、10 行以内のコードで、C# 側からこの XML を逆シリアル化します。データ階層の大きさや複雑さに関係なく、JSON にすぐにシリアル化できるオブジェクトをすぐにメモリ内に保持できます。

これを達成する方法についていくつかの良い例が必要な場合はお知らせください。また、SQL Server CLR 実行コンテキスト内で実行しているかどうかを明確にしてください。データをシリアル化/逆シリアル化するための特別なアクセス許可が必要になる場合があります。

Entity Framework が行うことを達成するための非常に原始的な方法だと思います。しかし、それは機能します。

于 2012-06-01T19:30:09.773 に答える