コード例 #1
0
        /// <summary>
        /// Get parameter list.
        /// </summary>
        protected override string GetParamDefs(DbColumnsSelection selection)
        {
            var text = GetColumnsText(selection, ",\n  ",
                                      c => $"{GetDirection(ParameterDirection.Input)} {c.GetSqlParamName()} {c.GetSqlColumnType()}");

            return(!string.IsNullOrEmpty(text) ? "\n  " + text + "\n" : text);
        }
コード例 #2
0
        /// <summary>
        /// Get an aggregated text from a columns selection.
        /// </summary>
        public static string AggregateText(this IDbTableBinding binding, DbColumnsSelection selection, string separator, Func <IDbColumnBinding, string> action)
        {
            if (selection != DbColumnsSelection.None)
            {
                return(binding.Columns.Where(c => IsSelected(binding, c, selection)).AggregateText(separator, action));
            }

            return(string.Empty);
        }
コード例 #3
0
        /// <summary>
        /// Get a column binding.
        /// </summary>
        public static IDbColumnBinding GetColumn(this IDbTableBinding binding, DbColumnsSelection selection)
        {
            var col = binding.FindColumn(selection);

            if (col == null)
            {
                throw new ArgumentException($"Invalid column of kind {selection} in table [{binding.TableName}]");
            }

            return(col);
        }
コード例 #4
0
 /// <summary>
 /// Get a list from a columns selection.
 /// </summary>
 protected string GetColumnsText(DbColumnsSelection selection, string separator, Func <IDbColumnBinding, string> action)
 {
     return(Binding.AggregateText(selection, separator, action));
 }
コード例 #5
0
        /// <summary>
        /// Get filter list.
        /// </summary>
        protected virtual string GetMatchCondition(DbColumnsSelection selection)
        {
            var text = GetColumnsText(selection, "\n\tAND ", c => $"{c.GetSqlColumnName()} = {c.GetSqlParamName()}");

            return(!string.IsNullOrEmpty(text) ? "    " + text : text);
        }
コード例 #6
0
 /// <summary>
 /// Get a list of fields assignments.
 /// </summary>
 protected virtual string GetFieldAssignments(DbColumnsSelection selection)
 {
     return(GetColumnsText(selection, ",\n\t", c => $"{c.GetSqlColumnName()} = {c.GetSqlParamName()}"));
 }
コード例 #7
0
 /// <summary>
 /// Get a list of columns names.
 /// </summary>
 protected virtual string GetColumnNames(DbColumnsSelection selection)
 {
     return(GetColumnsText(selection, ",\n\t", c => c.GetSqlColumnName()));
 }
コード例 #8
0
 /// <summary>
 /// Get parameter list.
 /// </summary>
 protected abstract string GetParamDefs(DbColumnsSelection selection);
コード例 #9
0
 /// <summary>
 /// Finds a column binding.
 /// </summary>
 public static IDbColumnBinding FindColumn(this IDbTableBinding binding, DbColumnsSelection selection)
 {
     return(binding.Columns?.FirstOrDefault(c => IsSelected(binding, c, selection)));
 }
コード例 #10
0
 /// <summary>
 /// Check if a table has columns of a certain type.
 /// </summary>
 public static bool HasColumns(this IDbTableBinding binding, DbColumnsSelection selection)
 {
     return(binding.Columns.Any(c => IsSelected(binding, c, selection)));
 }
コード例 #11
0
        /// <summary>
        /// Check whether if a column matches a selection criteria or not.
        /// </summary>
        public static bool IsSelected(IDbTableBinding binding, IDbColumnBinding column, DbColumnsSelection selection)
        {
            switch (selection)
            {
            case DbColumnsSelection.None:
                return(false);

            case DbColumnsSelection.AutoInc:
                return(column.IsAutoIncrement);

            case DbColumnsSelection.NonAutoInc:
                return(!column.IsAutoIncrement);

            case DbColumnsSelection.PrimaryKey:
                return(IsInPrimaryKey(binding, column));

            case DbColumnsSelection.NonPrimaryKey:
                return(!IsInPrimaryKey(binding, column));

            case DbColumnsSelection.UniqueKey:
                return(IsInUniqueKey(binding, column));

            case DbColumnsSelection.All:
            default:
                return(true);
            }
        }
コード例 #12
0
 /// <summary>
 /// Maps an action to every column.
 /// </summary>
 public static void MapColumns(this IDbTableBinding binding, DbColumnsSelection selection, Action <IDbColumnBinding> action)
 {
     binding.Columns.Where(c => IsSelected(binding, c, selection)).ForEach(c => action(c));
 }