예제 #1
0
        protected override void Init()
        {
            if (Partitions.Count == 0 && !(this is CalculatedTable))
            {
                // Make sure the table contains at least one partition (Calculated Tables handles this on their own), but don't add it to the undo stack:
                Handler.UndoManager.Enabled = false;

                if (Model.DataSources.Any(ds => ds.Type == DataSourceType.Provider) || Handler.CompatibilityLevel < 1400)
                {
                    Partition.CreateNew(this, Name);
                }
                else
                {
                    MPartition.CreateNew(this, Name);
                }

                Handler.UndoManager.Enabled = true;
            }

            RowLevelSecurity = new TableRLSIndexer(this);

            if (Handler.CompatibilityLevel >= 1400)
            {
                ObjectLevelSecurity = new TableOLSIndexer(this);
            }

            base.Init();
        }
예제 #2
0
        protected override void Init()
        {
            PartitionViewTable = new PartitionViewTable(this);

            if (Partitions.Count == 0 && !(this is CalculatedTable))
            {
                // Make sure the table contains at least one partition (Calculated Tables handles this on their own):

                if (Model.DataSources.Any(ds => ds.Type == DataSourceType.Structured))
                {
                    MPartition.CreateNew(this, Name);
                }
                else
                {
                    Partition.CreateNew(this, Name);
                }
            }

            RowLevelSecurity = new TableRLSIndexer(this);

            if (Handler.CompatibilityLevel >= 1400)
            {
                ObjectLevelSecurity = new TableOLSIndexer(this);
            }

            CheckChildrenErrors();

            base.Init();
        }
예제 #3
0
        public MPartition AddMPartition(string name = null, string expression = null)
        {
            Handler.BeginUpdate("add partition");
            var partition = MPartition.CreateNew(this, name);

            if (!string.IsNullOrEmpty(expression))
            {
                partition.Expression = expression;
            }
            Handler.EndUpdate();
            return(partition);
        }
예제 #4
0
        public void ConvertToPowerQuery()
        {
            Handler.BeginUpdate("Convert partitions");
            foreach (var oldPartition in this.Where(p => p.GetType() == typeof(Partition)).ToList())
            {
                var newPartition = MPartition.CreateNew(Table);
                newPartition.DataSource = oldPartition.DataSource;
                newPartition.Expression = oldPartition.Query;

                oldPartition.Delete();
                newPartition.Name = oldPartition.Name;
            }
            Handler.EndUpdate();
        }