/// <summary> /// Gets the named special column. /// </summary> private IColumnConfig?GetSpecialColumn(string?name) { if (string.IsNullOrEmpty(name)) { return(null); } var c = DbTable !.Columns.Where(x => x.Name == name && !x.IsPrimaryKey).SingleOrDefault(); if (c == null) { return(null); } var cc = new QueryColumnConfig { Name = c.Name, DbColumn = c }; cc.Prepare(Root !, this); return(cc); }
/// <summary> /// <inheritdoc/> /// </summary> protected override void Prepare() { CheckKeyHasValue(Name); CheckOptionsProperties(); Schema = DefaultWhereNull(Schema, () => "dbo"); DbTable = Root !.DbTables !.Where(x => x.Name == Name && x.Schema == Schema).SingleOrDefault(); if (DbTable == null) { throw new CodeGenException(this, nameof(Name), $"Specified Schema.Table '{Schema}.{Name}' not found in database."); } Alias = DefaultWhereNull(Alias, () => new string(StringConversion.ToSentenceCase(Name) !.Split(' ').Select(x => x.Substring(0, 1).ToLower(System.Globalization.CultureInfo.InvariantCulture).ToCharArray()[0]).ToArray())); ViewName = DefaultWhereNull(ViewName, () => "vw" + Name); ViewSchema = DefaultWhereNull(ViewSchema, () => Schema); if (!string.IsNullOrEmpty(Permission) && Permission.Split(".", StringSplitOptions.RemoveEmptyEntries).Length == 1) { Permission += ".Read"; } ColumnNameIsDeleted = DefaultWhereNull(ColumnNameIsDeleted, () => Root !.ColumnNameIsDeleted); ColumnNameTenantId = DefaultWhereNull(ColumnNameTenantId, () => Root !.ColumnNameTenantId); ColumnNameOrgUnitId = DefaultWhereNull(ColumnNameOrgUnitId, () => Root !.ColumnNameOrgUnitId); ColumnNameRowVersion = DefaultWhereNull(ColumnNameRowVersion, () => Root !.ColumnNameRowVersion); ColumnNameCreatedBy = DefaultWhereNull(ColumnNameCreatedBy, () => Root !.ColumnNameCreatedBy); ColumnNameCreatedDate = DefaultWhereNull(ColumnNameCreatedDate, () => Root !.ColumnNameCreatedDate); ColumnNameUpdatedBy = DefaultWhereNull(ColumnNameUpdatedBy, () => Root !.ColumnNameUpdatedBy); ColumnNameUpdatedDate = DefaultWhereNull(ColumnNameUpdatedDate, () => Root !.ColumnNameUpdatedDate); ColumnNameDeletedBy = DefaultWhereNull(ColumnNameDeletedBy, () => Root !.ColumnNameDeletedBy); ColumnNameDeletedDate = DefaultWhereNull(ColumnNameDeletedDate, () => Root !.ColumnNameDeletedDate); PrepareJoins(); if (Order != null && Order.Count > 0) { foreach (var order in Order) { order.Prepare(Root !, this); } } foreach (var c in DbTable.Columns) { if (c.IsPrimaryKey) { var cc = new QueryColumnConfig { Name = c.Name, DbColumn = c }; cc.Prepare(Root !, this); PrimaryKeyColumns.Add(cc); } if ((ExcludeColumns == null || !ExcludeColumns.Contains(c.Name !)) && (IncludeColumns == null || IncludeColumns.Contains(c.Name !))) { var cc = new QueryColumnConfig { Name = c.Name, DbColumn = c }; var ca = AliasColumns?.Where(x => x.StartsWith(c.Name + "^", StringComparison.Ordinal)).FirstOrDefault(); if (ca != null) { var parts = ca.Split("^", StringSplitOptions.RemoveEmptyEntries); if (parts.Length == 2) { cc.NameAlias = parts[1]; } } cc.Prepare(Root !, this); Columns.Add(cc); } } if (Where == null) { Where = new List <QueryWhereConfig>(); } if (ColumnTenantId != null) { Where.Add(new QueryWhereConfig { Statement = $"[{Alias}].[{ColumnTenantId.Name}] = dbo.fnGetTenantId(NULL)" }); } if (ColumnIsDeleted != null) { Where.Add(new QueryWhereConfig { Statement = $"([{Alias}].[{ColumnIsDeleted.Name}] IS NULL OR [{Alias}].[{ColumnIsDeleted.Name}] = 0)" }); } if (!string.IsNullOrEmpty(Permission)) { Where.Add(new QueryWhereConfig { Statement = $"{Root!.GetUserPermissionSql}(NULL, NULL, '{Permission.ToUpperInvariant()}', NULL) = 1" });