Ejemplo n.º 1
0
        private void PerformInsert(Program program, TableNode tableNode, IRow oldRow, IRow newRow, BitArray valueFlags, bool uncheckedValue)
        {
            switch (PropagateInsert)
            {
            case PropagateAction.True:
                tableNode.Insert(program, oldRow, newRow, valueFlags, uncheckedValue);
                break;

            case PropagateAction.Ensure:
            case PropagateAction.Ignore:
                using (Row sourceRow = new Row(program.ValueManager, tableNode.DataType.RowType))
                {
                    newRow.CopyTo(sourceRow);
                    using (IRow currentRow = tableNode.Select(program, sourceRow))
                    {
                        if (currentRow != null)
                        {
                            if (PropagateInsert == PropagateAction.Ensure)
                            {
                                tableNode.Update(program, currentRow, newRow, valueFlags, false, uncheckedValue);
                            }
                        }
                        else
                        {
                            tableNode.Insert(program, oldRow, newRow, valueFlags, uncheckedValue);
                        }
                    }
                }
                break;
            }
        }