Пример #1
0
        private static IExprExec?WhenMatched(ExprMerge merge, TempTableBase tempTable)
        {
            IExprExec?e = null;

            if (merge.WhenMatched != null)
            {
                if (merge.WhenMatched is ExprMergeMatchedUpdate update)
                {
                    e = SqQueryBuilder
                        .Update(merge.TargetTable)
                        .Set(update.Set)
                        .From(merge.TargetTable)
                        .InnerJoin(tempTable, merge.On)
                        .Where(update.And);
                }
                else if (merge.WhenMatched is ExprMergeMatchedDelete delete)
                {
                    ExprBoolean filter = SqQueryBuilder.Exists(SqQueryBuilder.SelectOne()
                                                               .From(tempTable)
                                                               .Where(merge.On));

                    if (delete.And != null)
                    {
                        filter = filter & delete.And;
                    }

                    e = SqQueryBuilder.Delete(merge.TargetTable).From(merge.TargetTable).Where(filter);
                }
                else
                {
                    throw new SqExpressException($"Unknown type: '{merge.WhenMatched.GetType().Name}'");
                }
            }
            return(e);
        }
Пример #2
0
        public async Task Exec(IScenarioContext context)
        {
            var table = AllTables.GetItAllColumnTypes(context.Dialect == SqlDialect.PgSql);

            var jsonStringOriginal = await ReadAsJsonString(context, table);

            await context.Database.Exec(SqQueryBuilder.Delete(table).All());

            await Insert(context, jsonStringOriginal, table);

            var jsonStringAfter = await ReadAsJsonString(context : context, table : table);

            if (jsonStringOriginal != jsonStringAfter)
            {
                throw new Exception("Export/Import/Export was not correct");
            }
        }