Пример #1
0
        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]));
            }
        }