Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DataAdapter.cs
Go to the documentation of this file.
6
7namespace System.Data.Common;
8
9[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)]
11{
12 private static readonly object s_eventFillError = new object();
13
14 private bool _acceptChangesDuringUpdate = true;
15
17
19
21
23
24 private bool _acceptChangesDuringFill = true;
25
27
29
31
33
34 private static int s_objectTypeCount;
35
36 internal readonly int _objectID = Interlocked.Increment(ref s_objectTypeCount);
37
38 [DefaultValue(true)]
40 {
41 get
42 {
44 }
45 set
46 {
48 }
49 }
50
51 [DefaultValue(true)]
53 {
54 get
55 {
57 }
58 set
59 {
61 }
62 }
63
64 [DefaultValue(false)]
66 {
67 get
68 {
70 }
71 set
72 {
74 }
75 }
76
79 {
80 get
81 {
83 {
84 return LoadOption.OverwriteChanges;
85 }
86 return _fillLoadOption;
87 }
88 [RequiresUnreferencedCode("Using LoadOption may cause members from types used in the expression column to be trimmed if not referenced directly.")]
89 set
90 {
91 if ((uint)value <= 3u)
92 {
94 return;
95 }
97 }
98 }
99
100 [DefaultValue(MissingMappingAction.Passthrough)]
102 {
103 get
104 {
106 }
107 set
108 {
109 if ((uint)(value - 1) <= 2u)
110 {
112 return;
113 }
115 }
116 }
117
118 [DefaultValue(MissingSchemaAction.Add)]
120 {
121 get
122 {
124 }
125 set
126 {
127 if ((uint)(value - 1) <= 3u)
128 {
130 return;
131 }
133 }
134 }
135
136 internal int ObjectID => _objectID;
137
138 [DefaultValue(false)]
139 public virtual bool ReturnProviderSpecificTypes
140 {
141 get
142 {
144 }
145 set
146 {
148 }
149 }
150
153 {
154 get
155 {
156 DataTableMappingCollection dataTableMappingCollection = _tableMappings;
157 if (dataTableMappingCollection == null)
158 {
159 dataTableMappingCollection = CreateTableMappings();
160 if (dataTableMappingCollection == null)
161 {
162 dataTableMappingCollection = new DataTableMappingCollection();
163 }
164 _tableMappings = dataTableMappingCollection;
165 }
166 return dataTableMappingCollection;
167 }
168 }
169
170 ITableMappingCollection IDataAdapter.TableMappings => TableMappings;
171
173 {
174 add
175 {
177 base.Events.AddHandler(s_eventFillError, value);
178 }
179 remove
180 {
181 base.Events.RemoveHandler(s_eventFillError, value);
182 }
183 }
184
185 protected DataAdapter()
186 {
187 GC.SuppressFinalize(this);
188 }
189
190 protected DataAdapter(DataAdapter from)
191 {
192 CloneFrom(from);
193 }
194
195 [EditorBrowsable(EditorBrowsableState.Never)]
197 {
198 return _fillLoadOption == (LoadOption)0;
199 }
200
201 [EditorBrowsable(EditorBrowsableState.Never)]
203 {
205 }
206
207 [EditorBrowsable(EditorBrowsableState.Never)]
208 public virtual bool ShouldSerializeFillLoadOption()
209 {
210 return _fillLoadOption != (LoadOption)0;
211 }
212
213 protected virtual bool ShouldSerializeTableMappings()
214 {
215 return true;
216 }
217
218 protected bool HasTableMappings()
219 {
220 if (_tableMappings != null)
221 {
222 return 0 < TableMappings.Count;
223 }
224 return false;
225 }
226
227 [Obsolete("CloneInternals() has been deprecated. Use the DataAdapter(DataAdapter from) constructor instead.")]
228 protected virtual DataAdapter CloneInternals()
229 {
230 DataAdapter dataAdapter = (DataAdapter)Activator.CreateInstance(GetType());
231 dataAdapter.CloneFrom(this);
232 return dataAdapter;
233 }
234
235 private void CloneFrom(DataAdapter from)
236 {
245 if (from._tableMappings == null || 0 >= from.TableMappings.Count)
246 {
247 return;
248 }
250 foreach (object tableMapping in from.TableMappings)
251 {
252 tableMappings.Add((tableMapping is ICloneable) ? ((ICloneable)tableMapping).Clone() : tableMapping);
253 }
254 }
255
257 {
258 DataCommonEventSource.Log.Trace("<comm.DataAdapter.CreateTableMappings|API> {0}", ObjectID);
259 return new DataTableMappingCollection();
260 }
261
262 protected override void Dispose(bool disposing)
263 {
264 if (disposing)
265 {
266 _tableMappings = null;
267 }
268 base.Dispose(disposing);
269 }
270
271 [RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
272 public virtual DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType)
273 {
274 throw ADP.NotSupported();
275 }
276
277 [RequiresUnreferencedCode("dataReader's schema table types cannot be statically analyzed.")]
278 protected virtual DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType, string srcTable, IDataReader dataReader)
279 {
280 long scopeId = DataCommonEventSource.Log.EnterScope("<comm.DataAdapter.FillSchema|API> {0}, dataSet, schemaType={1}, srcTable, dataReader", ObjectID, schemaType);
281 try
282 {
283 if (dataSet == null)
284 {
285 throw ADP.ArgumentNull("dataSet");
286 }
287 if (SchemaType.Source != schemaType && SchemaType.Mapped != schemaType)
288 {
289 throw ADP.InvalidSchemaType(schemaType);
290 }
291 if (string.IsNullOrEmpty(srcTable))
292 {
293 throw ADP.FillSchemaRequiresSourceTableName("srcTable");
294 }
295 if (dataReader == null || dataReader.IsClosed)
296 {
297 throw ADP.FillRequires("dataReader");
298 }
299 object obj = FillSchemaFromReader(dataSet, null, schemaType, srcTable, dataReader);
300 return (DataTable[])obj;
301 }
302 finally
303 {
304 DataCommonEventSource.Log.ExitScope(scopeId);
305 }
306 }
307
308 [RequiresUnreferencedCode("dataReader's schema table types cannot be statically analyzed.")]
309 protected virtual DataTable? FillSchema(DataTable dataTable, SchemaType schemaType, IDataReader dataReader)
310 {
311 long scopeId = DataCommonEventSource.Log.EnterScope("<comm.DataAdapter.FillSchema|API> {0}, dataTable, schemaType, dataReader", ObjectID);
312 try
313 {
314 if (dataTable == null)
315 {
316 throw ADP.ArgumentNull("dataTable");
317 }
318 if (SchemaType.Source != schemaType && SchemaType.Mapped != schemaType)
319 {
320 throw ADP.InvalidSchemaType(schemaType);
321 }
322 if (dataReader == null || dataReader.IsClosed)
323 {
324 throw ADP.FillRequires("dataReader");
325 }
326 object obj = FillSchemaFromReader(null, dataTable, schemaType, null, dataReader);
327 return (DataTable)obj;
328 }
329 finally
330 {
331 DataCommonEventSource.Log.ExitScope(scopeId);
332 }
333 }
334
335 [RequiresUnreferencedCode("dataReader's schema table types cannot be statically analyzed.")]
336 internal object FillSchemaFromReader(DataSet dataset, DataTable datatable, SchemaType schemaType, string srcTable, IDataReader dataReader)
337 {
338 DataTable[] array = null;
339 int num = 0;
340 do
341 {
343 if (0 < dataReaderContainer.FieldCount)
344 {
345 string sourceTableName = null;
346 if (dataset != null)
347 {
348 sourceTableName = GetSourceTableName(srcTable, num);
349 num++;
350 }
351 SchemaMapping schemaMapping = new SchemaMapping(this, dataset, datatable, dataReaderContainer, keyInfo: true, schemaType, sourceTableName, gettingData: false, null, null);
352 if (datatable != null)
353 {
354 return schemaMapping.DataTable;
355 }
356 if (schemaMapping.DataTable != null)
357 {
358 array = ((array != null) ? AddDataTableToArray(array, schemaMapping.DataTable) : new DataTable[1] { schemaMapping.DataTable });
359 }
360 }
361 }
362 while (dataReader.NextResult());
363 object obj = array;
364 if (obj == null && datatable == null)
365 {
366 obj = Array.Empty<DataTable>();
367 }
368 return obj;
369 }
370
371 public virtual int Fill(DataSet dataSet)
372 {
373 throw ADP.NotSupported();
374 }
375
376 protected virtual int Fill(DataSet dataSet, string srcTable, IDataReader dataReader, int startRecord, int maxRecords)
377 {
378 long scopeId = DataCommonEventSource.Log.EnterScope("<comm.DataAdapter.Fill|API> {0}, dataSet, srcTable, dataReader, startRecord, maxRecords", ObjectID);
379 try
380 {
381 if (dataSet == null)
382 {
383 throw ADP.FillRequires("dataSet");
384 }
385 if (string.IsNullOrEmpty(srcTable))
386 {
387 throw ADP.FillRequiresSourceTableName("srcTable");
388 }
389 if (dataReader == null)
390 {
391 throw ADP.FillRequires("dataReader");
392 }
393 if (startRecord < 0)
394 {
395 throw ADP.InvalidStartRecord("startRecord", startRecord);
396 }
397 if (maxRecords < 0)
398 {
399 throw ADP.InvalidMaxRecords("maxRecords", maxRecords);
400 }
401 if (dataReader.IsClosed)
402 {
403 return 0;
404 }
406 return FillFromReader(dataSet, null, srcTable, dataReader2, startRecord, maxRecords);
407 }
408 finally
409 {
410 DataCommonEventSource.Log.ExitScope(scopeId);
411 }
412 }
413
414 protected virtual int Fill(DataTable dataTable, IDataReader dataReader)
415 {
416 DataTable[] dataTables = new DataTable[1] { dataTable };
417 return Fill(dataTables, dataReader, 0, 0);
418 }
419
420 protected virtual int Fill(DataTable[] dataTables, IDataReader dataReader, int startRecord, int maxRecords)
421 {
422 long scopeId = DataCommonEventSource.Log.EnterScope("<comm.DataAdapter.Fill|API> {0}, dataTables[], dataReader, startRecord, maxRecords", ObjectID);
423 try
424 {
425 ADP.CheckArgumentLength(dataTables, "dataTables");
426 if (dataTables == null || dataTables.Length == 0 || dataTables[0] == null)
427 {
428 throw ADP.FillRequires("dataTable");
429 }
430 if (dataReader == null)
431 {
432 throw ADP.FillRequires("dataReader");
433 }
434 if (1 < dataTables.Length && (startRecord != 0 || maxRecords != 0))
435 {
436 throw ADP.NotSupported();
437 }
438 int result = 0;
439 bool flag = false;
440 DataSet dataSet = dataTables[0].DataSet;
441 try
442 {
443 if (dataSet != null)
444 {
445 flag = dataSet.EnforceConstraints;
446 dataSet.EnforceConstraints = false;
447 }
448 for (int i = 0; i < dataTables.Length && !dataReader.IsClosed; i++)
449 {
451 if (dataReaderContainer.FieldCount <= 0)
452 {
453 if (i != 0)
454 {
455 continue;
456 }
457 bool flag2;
458 do
459 {
460 flag2 = FillNextResult(dataReaderContainer);
461 }
462 while (flag2 && dataReaderContainer.FieldCount <= 0);
463 if (!flag2)
464 {
465 break;
466 }
467 }
468 if (0 >= i || FillNextResult(dataReaderContainer))
469 {
470 int num = FillFromReader(null, dataTables[i], null, dataReaderContainer, startRecord, maxRecords);
471 if (i == 0)
472 {
473 result = num;
474 }
475 continue;
476 }
477 break;
478 }
479 }
480 catch (ConstraintException)
481 {
482 flag = false;
483 throw;
484 }
485 finally
486 {
487 if (flag)
488 {
489 dataSet.EnforceConstraints = true;
490 }
491 }
492 return result;
493 }
494 finally
495 {
496 DataCommonEventSource.Log.ExitScope(scopeId);
497 }
498 }
499
500 [UnconditionalSuppressMessage("ReflectionAnalysis", "IL2026:RequiresUnreferencedCode", Justification = "parentChapterValue is not used here")]
501 internal int FillFromReader(DataSet dataset, DataTable datatable, string srcTable, DataReaderContainer dataReader, int startRecord, int maxRecords)
502 {
503 return FillFromReader(dataset, datatable, srcTable, dataReader, startRecord, maxRecords, null, null);
504 }
505
506 [RequiresUnreferencedCode("parentChapterValue's type cannot be statically analyzed")]
507 internal int FillFromReader(DataSet dataset, DataTable datatable, string srcTable, DataReaderContainer dataReader, int startRecord, int maxRecords, DataColumn parentChapterColumn, object parentChapterValue)
508 {
509 int result = 0;
510 int num = 0;
511 do
512 {
513 if (0 >= dataReader.FieldCount)
514 {
515 continue;
516 }
517 SchemaMapping schemaMapping = FillMapping(dataset, datatable, srcTable, dataReader, num, parentChapterColumn, parentChapterValue);
518 num++;
519 if (schemaMapping == null || schemaMapping.DataValues == null || schemaMapping.DataTable == null)
520 {
521 continue;
522 }
523 schemaMapping.DataTable.BeginLoadData();
524 try
525 {
526 if (1 == num && (0 < startRecord || 0 < maxRecords))
527 {
528 result = FillLoadDataRowChunk(schemaMapping, startRecord, maxRecords);
529 }
530 else
531 {
532 int num2 = FillLoadDataRow(schemaMapping);
533 if (1 == num)
534 {
535 result = num2;
536 }
537 }
538 }
539 finally
540 {
541 schemaMapping.DataTable.EndLoadData();
542 }
543 if (datatable != null)
544 {
545 break;
546 }
547 }
548 while (FillNextResult(dataReader));
549 return result;
550 }
551
552 [RequiresUnreferencedCode("Row chapter column types cannot be statically analyzed")]
553 private int FillLoadDataRowChunk(SchemaMapping mapping, int startRecord, int maxRecords)
554 {
555 DataReaderContainer dataReader = mapping.DataReader;
556 while (0 < startRecord)
557 {
558 if (!dataReader.Read())
559 {
560 return 0;
561 }
562 startRecord--;
563 }
564 int num = 0;
565 if (0 < maxRecords)
566 {
567 while (num < maxRecords && dataReader.Read())
568 {
570 {
571 try
572 {
573 mapping.LoadDataRowWithClear();
574 num++;
575 }
576 catch (Exception e) when (ADP.IsCatchableExceptionType(e))
577 {
579 OnFillErrorHandler(e, mapping.DataTable, mapping.DataValues);
580 }
581 }
582 else
583 {
584 mapping.LoadDataRow();
585 num++;
586 }
587 }
588 }
589 else
590 {
591 num = FillLoadDataRow(mapping);
592 }
593 return num;
594 }
595
596 [RequiresUnreferencedCode("Row chapter column types cannot be statically analyzed")]
597 private int FillLoadDataRow(SchemaMapping mapping)
598 {
599 int num = 0;
600 DataReaderContainer dataReader = mapping.DataReader;
602 {
603 while (dataReader.Read())
604 {
605 try
606 {
607 mapping.LoadDataRowWithClear();
608 num++;
609 }
610 catch (Exception e) when (ADP.IsCatchableExceptionType(e))
611 {
613 OnFillErrorHandler(e, mapping.DataTable, mapping.DataValues);
614 }
615 }
616 }
617 else
618 {
619 while (dataReader.Read())
620 {
621 mapping.LoadDataRow();
622 num++;
623 }
624 }
625 return num;
626 }
627
628 [RequiresUnreferencedCode("parentChapterValue's type cannot be statically analyzed")]
629 private SchemaMapping FillMappingInternal(DataSet dataset, DataTable datatable, string srcTable, DataReaderContainer dataReader, int schemaCount, DataColumn parentChapterColumn, object parentChapterValue)
630 {
631 bool keyInfo = MissingSchemaAction.AddWithKey == MissingSchemaAction;
632 string sourceTableName = null;
633 if (dataset != null)
634 {
635 sourceTableName = GetSourceTableName(srcTable, schemaCount);
636 }
637 return new SchemaMapping(this, dataset, datatable, dataReader, keyInfo, SchemaType.Mapped, sourceTableName, gettingData: true, parentChapterColumn, parentChapterValue);
638 }
639
640 [RequiresUnreferencedCode("parentChapterValue's type cannot be statically analyzed")]
641 private SchemaMapping FillMapping(DataSet dataset, DataTable datatable, string srcTable, DataReaderContainer dataReader, int schemaCount, DataColumn parentChapterColumn, object parentChapterValue)
642 {
643 SchemaMapping result = null;
645 {
646 try
647 {
648 result = FillMappingInternal(dataset, datatable, srcTable, dataReader, schemaCount, parentChapterColumn, parentChapterValue);
649 }
650 catch (Exception e) when (ADP.IsCatchableExceptionType(e))
651 {
653 OnFillErrorHandler(e, null, null);
654 }
655 }
656 else
657 {
658 result = FillMappingInternal(dataset, datatable, srcTable, dataReader, schemaCount, parentChapterColumn, parentChapterValue);
659 }
660 return result;
661 }
662
663 private bool FillNextResult(DataReaderContainer dataReader)
664 {
665 bool result = true;
667 {
668 try
669 {
670 result = dataReader.NextResult();
671 }
672 catch (Exception e) when (ADP.IsCatchableExceptionType(e))
673 {
675 OnFillErrorHandler(e, null, null);
676 }
677 }
678 else
679 {
680 result = dataReader.NextResult();
681 }
682 return result;
683 }
684
685 [EditorBrowsable(EditorBrowsableState.Advanced)]
687 {
688 return Array.Empty<IDataParameter>();
689 }
690
691 internal DataTableMapping GetTableMappingBySchemaAction(string sourceTableName, string dataSetTableName, MissingMappingAction mappingAction)
692 {
693 return DataTableMappingCollection.GetTableMappingBySchemaAction(_tableMappings, sourceTableName, dataSetTableName, mappingAction);
694 }
695
696 internal int IndexOfDataSetTable(string dataSetTable)
697 {
698 if (_tableMappings != null)
699 {
700 return TableMappings.IndexOfDataSetTable(dataSetTable);
701 }
702 return -1;
703 }
704
705 protected virtual void OnFillError(FillErrorEventArgs value)
706 {
707 ((FillErrorEventHandler)base.Events[s_eventFillError])?.Invoke(this, value);
708 }
709
710 private void OnFillErrorHandler(Exception e, DataTable dataTable, object[] dataValues)
711 {
712 FillErrorEventArgs fillErrorEventArgs = new FillErrorEventArgs(dataTable, dataValues);
713 fillErrorEventArgs.Errors = e;
714 OnFillError(fillErrorEventArgs);
715 if (!fillErrorEventArgs.Continue)
716 {
717 if (fillErrorEventArgs.Errors != null)
718 {
719 throw fillErrorEventArgs.Errors;
720 }
721 throw e;
722 }
723 }
724
725 [RequiresUnreferencedCode("IDataReader's (built from adapter commands) schema table types cannot be statically analyzed.")]
726 public virtual int Update(DataSet dataSet)
727 {
728 throw ADP.NotSupported();
729 }
730
731 private static DataTable[] AddDataTableToArray(DataTable[] tables, DataTable newTable)
732 {
733 for (int i = 0; i < tables.Length; i++)
734 {
735 if (tables[i] == newTable)
736 {
737 return tables;
738 }
739 }
740 DataTable[] array = new DataTable[tables.Length + 1];
741 for (int j = 0; j < tables.Length; j++)
742 {
743 array[j] = tables[j];
744 }
745 array[tables.Length] = newTable;
746 return array;
747 }
748
749 private static string GetSourceTableName(string srcTable, int index)
750 {
751 if (index == 0)
752 {
753 return srcTable;
754 }
755 return srcTable + index.ToString(CultureInfo.InvariantCulture);
756 }
757}
static ? object CreateInstance([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type type, BindingFlags bindingAttr, Binder? binder, object?[]? args, CultureInfo? culture)
Definition Activator.cs:17
static ArgumentOutOfRangeException InvalidLoadOption(LoadOption value)
Definition ADP.cs:124
static ArgumentNullException ArgumentNull(string parameter)
Definition ADP.cs:699
static ArgumentOutOfRangeException InvalidSchemaType(SchemaType value)
Definition ADP.cs:144
static Exception FillSchemaRequiresSourceTableName(string parameter)
Definition ADP.cs:375
static void TraceExceptionForCapture(Exception e)
Definition ADP.cs:74
static NotSupportedException NotSupported()
Definition ADP.cs:753
static Exception InvalidMaxRecords(string parameter, int max)
Definition ADP.cs:380
static Exception FillRequires(string parameter)
Definition ADP.cs:390
static ArgumentOutOfRangeException InvalidMissingSchemaAction(MissingSchemaAction value)
Definition ADP.cs:134
static Exception FillRequiresSourceTableName(string parameter)
Definition ADP.cs:395
static bool IsCatchableExceptionType(Exception e)
Definition ADP.cs:790
static ArgumentOutOfRangeException InvalidMissingMappingAction(MissingMappingAction value)
Definition ADP.cs:129
static void CheckArgumentLength(string value, string parameterName)
Definition ADP.cs:86
static Exception InvalidStartRecord(string parameter, int start)
Definition ADP.cs:385
static DataTable[] AddDataTableToArray(DataTable[] tables, DataTable newTable)
FillErrorEventHandler? FillError
int FillLoadDataRowChunk(SchemaMapping mapping, int startRecord, int maxRecords)
DataTableMappingCollection _tableMappings
MissingSchemaAction MissingSchemaAction
void CloneFrom(DataAdapter from)
virtual bool ShouldSerializeFillLoadOption()
virtual DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType, string srcTable, IDataReader dataReader)
virtual bool ShouldSerializeAcceptChangesDuringFill()
virtual IDataParameter[] GetFillParameters()
virtual void OnFillError(FillErrorEventArgs value)
ITableMappingCollection IDataAdapter. TableMappings
MissingSchemaAction _missingSchemaAction
void OnFillErrorHandler(Exception e, DataTable dataTable, object[] dataValues)
virtual bool ShouldSerializeTableMappings()
virtual int Fill(DataSet dataSet, string srcTable, IDataReader dataReader, int startRecord, int maxRecords)
virtual ? DataTable FillSchema(DataTable dataTable, SchemaType schemaType, IDataReader dataReader)
object FillSchemaFromReader(DataSet dataset, DataTable datatable, SchemaType schemaType, string srcTable, IDataReader dataReader)
virtual DataTable[] FillSchema(DataSet dataSet, SchemaType schemaType)
virtual int Update(DataSet dataSet)
virtual int Fill(DataSet dataSet)
virtual bool ReturnProviderSpecificTypes
static readonly object s_eventFillError
DataAdapter(DataAdapter from)
int FillFromReader(DataSet dataset, DataTable datatable, string srcTable, DataReaderContainer dataReader, int startRecord, int maxRecords)
DataTableMappingCollection TableMappings
SchemaMapping FillMappingInternal(DataSet dataset, DataTable datatable, string srcTable, DataReaderContainer dataReader, int schemaCount, DataColumn parentChapterColumn, object parentChapterValue)
virtual int Fill(DataTable[] dataTables, IDataReader dataReader, int startRecord, int maxRecords)
DataTableMapping GetTableMappingBySchemaAction(string sourceTableName, string dataSetTableName, MissingMappingAction mappingAction)
int IndexOfDataSetTable(string dataSetTable)
SchemaMapping FillMapping(DataSet dataset, DataTable datatable, string srcTable, DataReaderContainer dataReader, int schemaCount, DataColumn parentChapterColumn, object parentChapterValue)
virtual DataAdapter CloneInternals()
static string GetSourceTableName(string srcTable, int index)
int FillFromReader(DataSet dataset, DataTable datatable, string srcTable, DataReaderContainer dataReader, int startRecord, int maxRecords, DataColumn parentChapterColumn, object parentChapterValue)
virtual int Fill(DataTable dataTable, IDataReader dataReader)
bool FillNextResult(DataReaderContainer dataReader)
int FillLoadDataRow(SchemaMapping mapping)
override void Dispose(bool disposing)
virtual DataTableMappingCollection CreateTableMappings()
MissingMappingAction _missingMappingAction
ITableMapping ITableMappingCollection. Add(string sourceTableName, string dataSetTableName)
static ? DataTableMapping GetTableMappingBySchemaAction(DataTableMappingCollection? tableMappings, string sourceTable, string dataSetTable, MissingMappingAction mappingAction)
static readonly DataCommonEventSource Log
static DataReaderContainer Create(IDataReader dataReader, bool returnProviderSpecificTypes)
static void SuppressFinalize(object obj)
Definition GC.cs:202
Definition GC.cs:8
static CultureInfo InvariantCulture
static int Increment(ref int location)
delegate void FillErrorEventHandler(object sender, FillErrorEventArgs e)