.Net で厳密に型指定されたデータセットとはどういう意味ですか? 誰でも明確で簡単な例で説明できますか?
また、強く型付けされたデータセットと弱く型付けされたデータセットの違いは何ですか?
.Net で厳密に型指定されたデータセットとはどういう意味ですか? 誰でも明確で簡単な例で説明できますか?
また、強く型付けされたデータセットと弱く型付けされたデータセットの違いは何ですか?
厳密に型指定されたデータセットは、Db スキーマに基づいて生成されます。それらは、DataSet、DataTable、および DataRow から派生したクラスで構成されます。Db 列は、TableRow 派生クラスの正しく型指定されたプロパティになります。
型指定されていないデータセットは、子孫ではなく、単にデータセットを直接使用することを意味します。すべての列アクセスは、型キャストする必要があります。
Weakly Typed Datasetのようなものはありません。
型指定されたデータセットと型指定されていないデータセット 型指定されたデータセットは、最初に基本 DataSet クラスから派生したデータセットであり、次に .xsd ファイルに格納されているデータセット デザイナーからの情報を使用して、厳密に型指定された新しいデータセット クラスを生成します。スキーマからの情報 (テーブル、列など) が生成され、最初のクラスのオブジェクトとプロパティのセットとして、この新しいデータセット クラスにコンパイルされます。型指定されたデータセットは基本 DataSet クラスから継承されるため、型指定されたクラスは DataSet クラスのすべての機能を想定し、DataSet クラスのインスタンスをパラメーターとして受け取るメソッドで使用できます。
対照的に、型指定されていないデータセットには、対応する組み込みスキーマがありません。型指定されたデータセットと同様に、型指定されていないデータセットにはテーブルや列などが含まれますが、これらはコレクションとしてのみ公開されます。(ただし、型指定されていないデータセットにテーブルやその他のデータ要素を手動で作成した後、データセットの WriteXmlSchema メソッドを使用して、データセットの構造をスキーマとしてエクスポートできます。)
型指定されたデータセットと型指定されていないデータセットのデータ アクセスの比較 型指定されたデータセットのクラスには、そのプロパティがテーブルと列の実際の名前を取るオブジェクト モデルがあります。たとえば、型指定されたデータセットを使用している場合、次のようなコードを使用して列を参照できます。
C#VBコピー
// This accesses the CustomerID column in the first row of the Customers table.
string customerIDValue = northwindDataSet.Customers[0].CustomerID;
J#コピー
// This accesses the CustomerID column in the first row of the Customers table.
String customerIDValue =
northwindDataSet.get_Customers().get_Item(0).get_CustomerID();
対照的に、型指定されていないデータセットを使用している場合、同等のコードは次のとおりです。
C#VBコピー
string customerIDValue = (string)
dataset1.Tables["Customers"].Rows[0]["CustomerID"];
J#コピー
String customerIDValue = (String)
dataset1.get_Tables().get_Item("Customers").get_Rows().get_Item(0).get_Item("CustomerID");
型指定されたアクセスは読みやすいだけでなく、Visual Studio コード エディターの IntelliSense によって完全にサポートされています。型指定されたデータセットの構文は、操作が簡単であるだけでなく、コンパイル時に型チェックを行うため、データセット メンバーに値を代入する際にエラーが発生する可能性が大幅に減少します。DataSet 内の列の名前を変更してアプリケーションをコンパイルすると、ビルド エラーが発生します。タスク リストでビルド エラーをダブルクリックすると、古い列名を参照しているコード行に直接移動できます。型指定されたデータセット内のテーブルと列へのアクセスも、実行時のコレクションではなくコンパイル時に決定されるため、実行時のアクセスがわずかに高速になります。
型指定されたデータセットには多くの利点がありますが、型指定されていないデータセットが役立つさまざまな状況があります。最も明白なシナリオは、データセットに使用できるスキーマがない場合です。これは、たとえば、アプリケーションがデータセットを返すコンポーネントと対話しているが、その構造が何であるかを事前に知らない場合に発生する可能性があります。同様に、静的で予測可能な構造を持たないデータを扱う場合もあります。その場合、データ構造が変更されるたびに型付きデータセット クラスを再生成する必要があるため、型付きデータセットを使用することは実際的ではありません。
より一般的には、スキーマを使用できない状態でデータセットを動的に作成することがよくあります。その場合、データセットは、データをリレーショナルな方法で表すことができる限り、情報を保持できる便利な構造にすぎません。同時に、情報をシリアライズして別のプロセスに渡したり、XML ファイルを書き出したりする機能など、データセットの機能を利用できます。
区別は次のようになると思います。
厳密に型指定されたデータセットは、データセットが入力されるとき、またはデータセットが入力される前に、各列に関連付けられた型をデータセットが認識している場所です。
弱く型付けされたデータセットは、データセットに型が何であるかを推測させます。列が null または数値である可能性がある場合、データセットは、意図した型が文字列であり、null 許容の int ではないと誤って推測する可能性があります。