コード例 #1
0
        /// <summary>
        /// Extract Generated Column from context
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public static GeneratedColumnDefinition Extract(GeneratedColumnConstraintContext context)
        {
            // Get Generated Column detail: "GENERATEDALWAYSAS(hex(id))STORED"
            if (context == null)
            {
                throw new ArgumentOutOfRangeException($"{nameof(context)} is null");
            }

            var predicateExpressionContext = context.GetChild <PredicateExpressionContext>();
            var generatedElements          = Enumerable.Range(0, context.ChildCount)
                                             .Select(x => context.GetChild(x))
                                             .Select(x => x.GetText())
                                             .ToArray();
            var isAlways = generatedElements.Contains("ALWAYS");
            var isStored = generatedElements.Contains("STORED");

            var statement       = predicateExpressionContext.GetText();
            var generatedColumn = new GeneratedColumnDefinition()
            {
                Always    = isAlways,
                IsStored  = isStored,
                Statement = statement,
            };

            return(generatedColumn);
        }
コード例 #2
0
        /// <summary>
        /// Listener for Generated column detection
        /// </summary>
        /// <param name="context"></param>
        public override void EnterGeneratedColumnConstraint([NotNull] GeneratedColumnConstraintContext context)
        {
            base.EnterGeneratedColumnConstraint(context);
            // generated column
            var column          = TableDefinition.LookupColumnDefinition(context);
            var generatedColumn = GeneratedColumnDefinition.Extract(context);

            column.GeneratedColumn = generatedColumn;
        }