protected override Task <Func <object> > DoInsertAsync(string executableSql, Dict executableParams, bool ignoreIfDuplicate) { InsertStatement executableStatement = new InsertStatement(this.database, executableSql); var memoryTable = executableStatement.StatementFromRefs[0].table as MemoryTable; var insertRefs = executableStatement.GetInsertRefs(executableParams); var fieldValues = BaseStatement.RemapStatementParamsToFieldValues(executableParams, insertRefs); var dataRow = memoryTable.DataTable.NewRow(); foreach (var nameValuePair in fieldValues) { dataRow[nameValuePair.Key] = nameValuePair.Value; } memoryTable.DataTable.Rows.Add(dataRow); this.changedTables.Add(memoryTable); if (memoryTable.AutoIncrementFieldName == null) { return(Task.FromResult <Func <object> >(null)); } else { return(Task.FromResult <Func <object> >(() => dataRow[memoryTable.AutoIncrementFieldName])); } }