Torna al Thread
protected virtual int Fill(DataTable[] dataTables, IDataReader dataReader, int startRecord, int maxRecords)
{
int num3;
IntPtr ptr;
Bid.ScopeEnter(out ptr, "<comm.DataAdapter.Fill|API> %d#, dataTables[], dataReader, startRecord, maxRecords\n", this.ObjectID);
try
{
ADP.CheckArgumentLength(dataTables, "tables");
if (((dataTables == null) || (dataTables.Length == 0)) || (dataTables[0] == null))
{
throw ADP.FillRequires("dataTable");
}
if (dataReader == null)
{
throw ADP.FillRequires("dataReader");
}
if ((1 < dataTables.Length) && ((startRecord != 0) || (maxRecords != 0)))
{
throw ADP.NotSupported();
}
int num2 = 0;
bool enforceConstraints = false;
DataSet dataSet = dataTables[0].DataSet;
try
{
if (dataSet != null)
{
enforceConstraints = dataSet.EnforceConstraints;
dataSet.EnforceConstraints = false;
}
for (int i = 0; i < dataTables.Length; i++)
{
if (dataReader.IsClosed)
{
goto Label_00DE;
}
DataReaderContainer container = DataReaderContainer.Create(dataReader, this.ReturnProviderSpecificTypes);
if (container.FieldCount > 0)
{
if ((0 < i) && !this.FillNextResult(container))
{
goto Label_00DE;
}
int num4 = this.FillFromReader(null, dataTables[i], null, container, startRecord, maxRecords, null, null);
if (i == 0)
{
num2 = num4;
}
}
}
}
catch (ConstraintException)
{
enforceConstraints = false;
throw;
}
finally
{
if (enforceConstraints)
{
dataSet.EnforceConstraints = true;
}
}
Label_00DE:
num3 = num2;
}
finally
{
Bid.ScopeLeave(ref ptr);
}
return num3;
}