'宣言 Protected Overloads Function ReadObject( _ ByVal reader As IDataReader, _ ByVal binding As ScheduleDataBinding, _ ByVal compositeInstance As Object _ ) As Object
protected object ReadObject( IDataReader reader, ScheduleDataBinding binding, object compositeInstance )
カスタム データ プロバイダーで独自の操作を実装している場合は、reader の Read を呼び出して SQL コマンドの結果セットをすべて読み取るループの中で、ReadRecord を呼び出します。ReadRecord が呼び出されるたびに、データベースレコードが binding で表された WebSchedule オブジェクト モデルのインスタンスにバインドされます。このインスタンスは CreateInstance によって作成されるか、または事前に作成した compositeInstance を再利用できます。
複数の ScheduleDataBinding に関連する複合オブジェクトを実装する場合 (たとえば、データ モデルの複数のテーブルを読み取ってすべてのプロパティに値を設定する場合など)は、事前に作成した compositeInstance を渡すことができます (このインスタンスの作成は呼び出し側で行います)。compositeInstance が指定された場合、ReadRecord は CreateInstance を呼び出す代わりに、このレコードからバインドされた値を compositeInstance に格納します。一般に、複合インスタンスという複雑な仕組みが必要となるのは、動的SQLコマンドを使用する場合のみです。カスタム データ プロバイダーでは複合インスタンスを実装するのは避けて、代わりにストアド プロシージャーを使用することをお勧めします。ストアド プロシージャーいる場合)。
ScheduleDataBinding のサブクラスは基本クラスからすべてのバインディング メンバー プロパティを継承するため、継承を扱うために複合データ バインディングを使用する必要はありません。ScheduleDataBinding 派生クラスでは、基本クラスのパブリック プロパティがバインドされます。たとえば、 Activity (Appointment の基本クラス) プロパティと Appointment プロパティの両方をデータバインドするには、AppointmentBinding だけで十分です。ActivityBinding と AppointmentBinding の両方を使用してデータバインドする必要はありません。
binding に渡された ScheduleDataBinding のインスタンスは、カスタム データ プロバイダーが DataBindings の Add (または AddRange)を呼び出してすでに登録しているものと一致する必要があります。ReadRecord メソッドに渡されたのと同じオブジェクト参照が DataBindings に見つからない場合は、データ モデルとオブジェクト モデル間のデータ バインディング方法を記述するメタデータが見つからず、このメソッドは失敗します。データモデルとオブジェクトモデル間の初期マップの作成はかなり負荷の高い操作なので、このメタデータは特定の ScheduleDataBinding が DataBindings コレクションに初めて追加されたときにキャッシュされます。したがって、初めて DataBindings に追加してから ReadRecord を呼び出すまでに ScheduleDataBinding を変更すると、その変更はデータバインドに反映されない場合があります。
ReadObject