internal override void CreateLifetimeConditions(DmlfCommandBase cmd, string targetEntityAlias, TargetEntitySqlModel targetEntityModel) { cmd.AddAndCondition(new DmlfIsNullCondition { Expr = DmlfColumnRefExpression.Create(targetEntityAlias, ValidToColumn), }); }
protected static bool GetCondition(DmlfCommandBase cmd, ChangeSetItem item, ChangeSetCondition cond, DatabaseInfo db) { var source = new DmlfSource { Alias = "basetbl", LinkedInfo = item.LinkedInfo, TableOrView = item.TargetTable, }; var colref = cmd.SingleFrom.GetColumnRef(source, item.TargetTable, StructuredIdentifier.Parse(cond.Column), db, DmlfJoinType.Inner); if (colref == null) return false; //var table = db.FindTable(item.TargetTable); //if (table == null) return false; //var column = table.FindColumn(cond.Column); //if (column == null) return false; var colexpr = new DmlfColumnRefExpression { Column = colref }; var column = colref.FindSourceColumn(db); cmd.AddAndCondition(FilterParser.FilterParser.ParseFilterExpression(column != null ? column.CommonType : new DbTypeString(), colexpr, cond.Expression)); return true; }
internal override void CreateReliveConditions(DmlfCommandBase cmd, string targetEntityAlias, TargetEntitySqlModel targetEntityModel) { if (!String.IsNullOrEmpty(DeletedDateColumn)) { cmd.AddAndCondition(new DmlfIsNotNullCondition { Expr = DmlfColumnRefExpression.Create(targetEntityAlias, DeletedDateColumn), }); } if (!String.IsNullOrEmpty(IsDeletedColumn)) { cmd.AddAndCondition(new DmlfEqualCondition { LeftExpr = DmlfColumnRefExpression.Create(targetEntityAlias, DeletedDateColumn), RightExpr = new DmlfLiteralExpression { Value = 1 }, }); } }
private void CreateTargetColumsnCondition(DmlfCommandBase cmd, string targetEntityAlias, Func<TargetColumnSqlModelBase, bool> useThisColumns) { foreach (var column in TargetColumns.Where(useThisColumns)) { var cond = new DmlfEqualCondition { // target columns LeftExpr = column.CreateTargetExpression(targetEntityAlias), // source column RightExpr = column.CreateSourceExpression(SourceJoinModel, false), CollateSpec = column.UseCollate(SourceJoinModel) ? "DATABASE_DEFAULT" : null, }; cmd.AddAndCondition(cond); } }
private void CreateNotNullConditions(DmlfCommandBase cmd) { foreach (var column in TargetColumns.Where(x => x.IsKey || (x.Info?.NotNull ?? false))) { var cond = new DmlfIsNotNullCondition { Expr = column.CreateSourceExpression(SourceJoinModel, false), }; cmd.AddAndCondition(cond); } }
private void CreateFilterConditions(DmlfCommandBase cmd) { foreach(var col in SourceJoinModel.Columns.Values) { var colFilterCondition = col.FilterCondition; // process additional condition var additional = _dbsh.AdditionalFilters.FirstOrDefault(x => x.Column == col.Alias); if (additional != null) { var type = SourceColumnSqlModel.DetectFilterType(additional.FilterType, col.DbshColumns); var entity = col.Entities.First(); var expr = new DmlfColumnRefExpression { Column = new DmlfColumnRef { ColumnName = entity.GetColumnName(col.Alias), Source = entity.QuerySource, } }; var additionalCondition = FilterParser.ParseFilterExpression(type, expr, additional.Filter); if (colFilterCondition != null) { var andCondition = new DmlfAndCondition(); andCondition.Conditions.Add(additionalCondition); andCondition.Conditions.Add(colFilterCondition); colFilterCondition = andCondition; } else { colFilterCondition = additionalCondition; } } if (colFilterCondition != null) { var orCond = new DmlfOrCondition(); if (col.Entities.Count == 1) { var entity = col.Entities.Single(); if (entity.SingleKeyColumnNameOrAlias != null) { var expr = new DmlfColumnRefExpression { Column = new DmlfColumnRef { ColumnName = entity.GetColumnName(entity.SingleKeyColumnNameOrAlias), Source = entity.QuerySource, } }; orCond.Conditions.Add(new DmlfIsNullCondition { Expr = expr, }); } } if (orCond.Conditions.Any()) { orCond.Conditions.Add(colFilterCondition); cmd.AddAndCondition(orCond); } else { cmd.AddAndCondition(colFilterCondition); } } } }