Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ MergeRows()

void System.Data.Merger.MergeRows ( DataRow[] rows)
inlinepackage

Definition at line 193 of file Merger.cs.

194 {
195 DataTable dataTable = null;
196 DataTable dataTable2 = null;
197 DataKey key = default(DataKey);
198 Index index = null;
200 _dataSet.EnforceConstraints = false;
201 for (int i = 0; i < rows.Length; i++)
202 {
203 DataRow dataRow = rows[i];
204 if (dataRow == null)
205 {
206 throw ExceptionBuilder.ArgumentNull($"{"rows"}[{i}]");
207 }
208 if (dataRow.Table == null)
209 {
210 throw ExceptionBuilder.ArgumentNull($"{"rows"}[{i}].{"Table"}");
211 }
212 if (dataRow.Table.DataSet == _dataSet)
213 {
214 continue;
215 }
216 if (dataTable != dataRow.Table)
217 {
218 dataTable = dataRow.Table;
220 if (dataTable2 == null)
221 {
222 _dataSet.EnforceConstraints = enforceConstraints;
223 return;
224 }
225 if (dataTable2._primaryKey != null)
226 {
228 }
229 if (key.HasValue)
230 {
231 if (index != null)
232 {
233 index.RemoveRef();
234 index = null;
235 }
236 index = new Index(dataTable2, dataTable2._primaryKey.Key.GetIndexDesc(), DataViewRowState.OriginalRows | DataViewRowState.Added, null);
237 index.AddRef();
238 index.AddRef();
239 }
240 }
241 if (dataRow._newRecord != -1 || dataRow._oldRecord != -1)
242 {
243 DataRow targetRow = null;
244 if (0 < dataTable2.Rows.Count && index != null)
245 {
246 targetRow = dataTable2.FindMergeTarget(dataRow, key, index);
247 }
249 if (targetRow.Table._dependentColumns != null && targetRow.Table._dependentColumns.Count > 0)
250 {
251 targetRow.Table.EvaluateExpressions(targetRow, DataRowAction.Change, null);
252 }
253 }
254 }
255 if (index != null)
256 {
257 index.RemoveRef();
258 index = null;
259 }
260 _dataSet.EnforceConstraints = enforceConstraints;
261 }
DataTable MergeSchema(DataTable table)
Definition Merger.cs:263
DataKey GetSrcKey(DataTable src, DataTable dst)
Definition Merger.cs:501
readonly bool _preserveChanges
Definition Merger.cs:13
readonly DataSet _dataSet
Definition Merger.cs:9

References System.Data.Merger._dataSet, System.Data.Merger._preserveChanges, System.Data.ExceptionBuilder.ArgumentNull(), System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Data.DataSet.EnforceConstraints, System.Data.Merger.GetSrcKey(), System.index, System.key, and System.Data.Merger.MergeSchema().