public virtual void Load (IDataReader reader, LoadOption loadOption, FillErrorEventHandler errorHandler){
IntPtr hscp;
Bid.ScopeEnter(out hscp, "<ds.DataTable.Load|API> %d#, loadOption=%d{ds.LoadOption}\n", ObjectID, (int)loadOption);
try {
if (this.PrimaryKey.Length == 0) {
DataTableReader dtReader = reader as DataTableReader;
if (dtReader != null && dtReader.CurrentDataTable == this)
return; // if not return, it will go to infinite loop
}
Common.LoadAdapter adapter = new Common.LoadAdapter();
adapter.FillLoadOption = loadOption;
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
if (null != errorHandler) {
adapter.FillError += errorHandler;
}
adapter.FillFromReader(new DataTable[] { this }, reader, 0, 0);
if (!reader.IsClosed && !reader.NextResult()) { //
reader.Close();
}
}
finally {
Bid.ScopeLeave(ref hscp);
}
}