4

WinForms アプリケーション内からデータベースと組み合わせて DataSets をいつ使用するかについて、いくつかの MS の記事を読みました。DataSet が提供する使いやすさは確かに気に入っていますが、大規模なデータ ソースで DataSet を使用する場合、いくつか懸念があります。SQLite データベースを使用して、処理された Web ログ情報をローカルに保存したいと考えています。これにより、数万行のデータが生成される可能性があります。

データベース テーブルを介して DataSet が満たされる場合、データベースからのすべてのデータが含まれることになりますか、それともデータベースからのデータの一部のみが含まれますか?

DataSet を使用してデータベースに行を追加し、たとえば Update を実行して、DataSet がメモリに保持しているものを何とか「クリア」してから、追加の行の追加を実行できますか?

では、DataSet が現在メモリに保持しているものを本質的に管理することは可能でしょうか? DataSet が 100,000 行を含むテーブルを表している場合、100,000 行すべてをデータベースからメモリにロードしてからでないと使用できないということですか?

ありがとう。

4

1 に答える 1

2

ここに非常に重要なポイントがあります。これらの点は、.NET で導入された切断状態に突然移行したときに、.Net の開始時に提起されました。

あなたの問題に対する答えはページングです。データベースをチャンクでクエリするように、グリッドまたはその他の表示デバイス (コントロール) を手動でコーディングする必要があります。たとえば、フィールドとスクロールを持つコントロール (グリッドではない) があるとします。スクロールに 201 回のクリックを与えます。200 回のクリックで 200 件のレコードをスクロールし、クリック # 201 でデータベースにさらに 200 件のクエリを実行します。データセット内のレコード数が 1000 に達したときに、200 レコードを削除するロジックを追加することもできます。これは単なる例です。

データを保存するには、これと同じDataSet/DataTable. それを行う方法はほとんどありません。DataSet/DataTable新規または編集された行、関係などを識別する機能があります。深刻なシステムでは、エンティティ リストはカプセル化Datatablesしてカスタマイズを提供します。

Entity Frameworkあなたは能力を調べたいかもしれません。この機能がそこに含まれていたかどうかはわかりません。

基本的に、小さなデータを使用するいくつかの単純なアプリケーションでは、すぐに使用できる ADO.net を使用できます。しかし、深刻なシステムでは、通常、ADO.NET を使用して多くの基礎作業を行い、堅牢なデータ アクセス レイヤーを提供し、ユーザー エクスペリエンスを向上させるための追加作業を行います。この場合、データをチャンクでロードすることになります。100K レコードをロードすると、ユーザーは最初のロードを待つ必要があり、すべてをスクロールするのが難しくなります。

最後に、アプリケーションとは何か、何のためにあるのか、ユーザーにとって何が満足できるものであるか、または満足できないものであるかを確認する必要があります。

于 2013-10-22T15:36:45.020 に答える