示例#1
0
        private void BuildInsertAction(MergeSpecification specification)
        {
            var action       = new InsertMergeAction();
            var insertSource = action.Source = new ValuesInsertSource();
            var row          = new RowValue();

            foreach (var column in _columnDescriptors)
            {
                var colRef = new ColumnReferenceExpression();
                colRef.ColumnType          = ColumnType.Regular;
                colRef.MultiPartIdentifier = new MultiPartIdentifier().Create(column.Name);
                action.Columns.Add(colRef);

                colRef                     = new ColumnReferenceExpression();
                colRef.ColumnType          = ColumnType.Regular;
                colRef.MultiPartIdentifier = new MultiPartIdentifier().Create(new Identifier {
                    Value = MergeIdentifierStrings.SourceName
                },
                                                                              column.Name);

                row.ColumnValues.Add(colRef);
            }

            insertSource.RowValues.Add(row);

            specification.ActionClauses.Add(new MergeActionClause
            {
                Action    = action,
                Condition = MergeCondition.NotMatchedByTarget
            });
        }
 public override void ExplicitVisit(InsertMergeAction fragment)
 {
     _fragments.Add(fragment);
 }
示例#3
0
 public override void Visit(InsertMergeAction node) { this.action(node); }
示例#4
0
        private void BuildInsertAction(MergeSpecification specification)
        {
            var action = new InsertMergeAction();
            var insertSource = action.Source = new ValuesInsertSource();
            var row = new RowValue();

            foreach (var column in _merge.Table.Columns)
            {
                var colRef = new ColumnReferenceExpression();
                colRef.ColumnType = ColumnType.Regular;
                colRef.MultiPartIdentifier = MultiPartIdentifierBuilder.Get(column.Name.GetName());
                action.Columns.Add(colRef);

                colRef = new ColumnReferenceExpression();
                colRef.ColumnType = ColumnType.Regular;
                colRef.MultiPartIdentifier = MultiPartIdentifierBuilder.Get(MergeIdentifierStrings.SourceName, column.Name.GetName());

                row.ColumnValues.Add(colRef);
            }

            insertSource.RowValues.Add(row);

            specification.ActionClauses.Add(new MergeActionClause
            {
                Action = action,
                Condition = MergeCondition.NotMatchedByTarget
            });
        }