private void MakeInsertes(IDataSource ds, XmlDocument xml)
{
XmlNodeList insertingRecords = xml.SelectNodes("records/Created/record");
string id = GetIdColumnName();
foreach (XmlNode node in insertingRecords)
{
record = node;
values = new SortedList(this.Reader.Reader.Fields.Count);
keys = new SortedList();
oldValues = new SortedList();
foreach (RecordField field in this.Reader.Reader.Fields)
{
XmlNode keyNode = node.SelectSingleNode(field.Name);
values[field.Name] = keyNode != null ? keyNode.InnerText : null;
}
confirmation = null;
if (id.IsNotEmpty())
{
XmlNode keyNode = node.SelectSingleNode(id);
if (this.UseIdConfirmation && keyNode != null && keyNode.InnerText.IsNotEmpty())
{
confirmation = changingEventArgs.ConfirmationList[keyNode.InnerText];
}
}
BeforeRecordInsertedEventArgs eBeforeRecordInserted = new BeforeRecordInsertedEventArgs(record, keys, values, confirmation);
this.OnBeforeRecordInserted(eBeforeRecordInserted);
if (eBeforeRecordInserted.CancelAll)
{
break;
}
if (eBeforeRecordInserted.Cancel)
{
continue;
}
if (ds != null)
{
ds.GetView("").Insert(values, InsertCallback);
}
else
{
this.InsertCallback(0, null);
}
}
if (insertingRecords.Count > 0)
{
needRetrieve = true;
}
}