Ejemplo n.º 1
0
        /// <inheritdoc/>
        public override void Inititalze(DbExpression content = null)
        {
            base.Inititalze(content);
            var context = GenerateContext;
            int index   = 0;

            Units = new CommitUnitBase[Tables.Length];
            foreach (var table in Tables)
            {
                if (index == 0)
                {
                    Units[index++] = this.CreateUnitForIdentity(table, content, out _HasExpressionKey);
                }
                else
                {
                    var unit = new CommitKeyUnit(table);
                    foreach (var column in table.Keys)
                    {
                        unit.Add(this.CreateCommitUnitMember(column, null));
                    }
                    this.CreateCommitUnit(unit, table.Members, content);
                    Units[index++] = unit;
                }
            }
        }
Ejemplo n.º 2
0
        internal static InsertValueFragment InsertKeyUnit(this ContentBase data, CommitKeyUnit unit, DbName name = null)
        {
            var context = data.GenerateContext;
            var target  = new TableFragment(context, unit.Table, name);
            var insert  = new InsertValueFragment(context, target, data.CommitObject, data.Items);

            data.CommitObject.Parent = insert;
            unit.Keys.Concat(unit.Members).ForEach(member => SetCommitMember(insert, member));
            return(insert);
        }
Ejemplo n.º 3
0
        /// <inheritdoc/>
        public override void Inititalze(DbExpression content = null)
        {
            base.Inititalze(content);
            Units = new CommitKeyUnit[Table.InheritSets.Length + 1];
            int index = 0;

            this.Tables.ForEach(metadata =>
            {
                var unit = new CommitKeyUnit(metadata);
                this.CreateCommitUnit(unit, metadata.Members, content);
                Units[index++] = unit;
            });
        }
Ejemplo n.º 4
0
        internal static InsertFragment InsertTemptable(this ContentBase data, TemporaryTableFragment temptable, CommitKeyUnit unit, DbName name = null)
        {
            var members = unit.Keys.Concat(unit.Members).Select(a => a.Metadata);
            var context = data.GenerateContext;
            var table   = new TableFragment(context, unit.Table, name);
            var select  = new SelectFragment(context, temptable);
            var current = new InsertFragment(context, table, select);

            foreach (var member in members)
            {
                select.CreateMember(null, temptable.GetMember(member));
                current.CreateMember(null, member);
            }
            return(current);
        }