Beispiel #1
0
        public override void Execute()
        {
            DatabaseDeclaration.GetTable("dbo", "Company").HasHistoryTable();

            var configuration = new DwhBuilderConfiguration();
            var model         = DwhDataDefinitionToRelationalModelConverter.Convert(DatabaseDeclaration, "dbo");

            DataDefinitionExtenderMsSql2016.Extend(DatabaseDeclaration, configuration);
            RelationalModelExtender.Extend(model, configuration);

            CreateDatabase(DatabaseDeclaration);

            Init(configuration, model);
            Update(configuration, model);
        }
Beispiel #2
0
    public void EtlRunInfo()
    {
        var model         = new TestModel();
        var configuration = new DwhBuilderConfiguration();

        model.GetTable("Secondary", "Pet").EtlRunInfoDisabled();

        DataDefinitionExtenderMsSql2016.Extend(model, configuration);

        var etlRunTable = model.GetTable("dbo", "_EtlRun");

        Assert.IsNotNull(etlRunTable);
        Assert.AreEqual(6, etlRunTable.Columns.Count);

        Assert.AreEqual(3 + 4, model.GetTable("dbo", "People").Columns.Count);
        Assert.AreEqual(3, model.GetTable("Secondary", "Pet").Columns.Count);
    }
Beispiel #3
0
    public void HistoryWithoutEtlRunInfo()
    {
        var model         = new TestModel();
        var configuration = new DwhBuilderConfiguration()
        {
            UseEtlRunInfo           = false,
            HistoryTableNamePostfix = "Hist",
        };

        model.GetTable("dbo", "People").HasHistoryTable();

        DataDefinitionExtenderMsSql2016.Extend(model, configuration);

        Assert.AreEqual(3 + 1, model.GetTable("dbo", "People").Columns.Count);
        Assert.IsTrue(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.ValidFromColumnName));
        Assert.IsFalse(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.ValidToColumnName));
        Assert.IsFalse(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunInsertColumnName));
        Assert.IsFalse(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunUpdateColumnName));

        Assert.AreEqual(1 + 3 + 2, model.GetTable("dbo", "PeopleHist").Columns.Count);
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey("PeopleHistID"));
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey(configuration.ValidFromColumnName));
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey(configuration.ValidToColumnName));
        Assert.IsFalse(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunInsertColumnName));
        Assert.IsFalse(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunUpdateColumnName));
        Assert.IsFalse(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunFromColumnName));
        Assert.IsFalse(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunToColumnName));

        Assert.AreEqual(3, model.GetTable("Secondary", "Pet").Columns.Count);

        Assert.IsNotNull(model.GetTable("dbo", "PeopleHist").Properties.OfType <PrimaryKey>().First().SqlColumns[0].SqlColumn.Properties.OfType <Identity>().FirstOrDefault());
        Assert.AreEqual(1, model.GetTable("dbo", "PeopleHist").Properties.OfType <PrimaryKey>().First().SqlColumns.Count);
        Assert.AreEqual("PeopleHistID", model.GetTable("dbo", "PeopleHist").Properties.OfType <PrimaryKey>().First().SqlColumns[0].SqlColumn.Name);

        Assert.AreEqual(model.GetTable("dbo", "People"), model.GetTable("dbo", "PeopleHist").Properties.OfType <ForeignKey>().First().ReferredTable);
        Assert.AreEqual(model.GetTable("dbo", "PeopleHist")["Id"], model.GetTable("dbo", "PeopleHist").Properties.OfType <ForeignKey>().First().ForeignKeyColumns[0].ForeignKeyColumn);
        Assert.AreEqual(model.GetTable("dbo", "People")["Id"], model.GetTable("dbo", "PeopleHist").Properties.OfType <ForeignKey>().First().ForeignKeyColumns[0].ReferredColumn);

        Assert.AreEqual(model.GetTable("Secondary", "Pet"), model.GetTable("dbo", "PeopleHist").Properties.OfType <ForeignKey>().Skip(1).First().ReferredTable);
        Assert.AreEqual(model.GetTable("dbo", "PeopleHist")["FavoritePetId"], model.GetTable("dbo", "PeopleHist").Properties.OfType <ForeignKey>().Skip(1).First().ForeignKeyColumns[0].ForeignKeyColumn);
        Assert.AreEqual(model.GetTable("Secondary", "Pet")["Id"], model.GetTable("dbo", "PeopleHist").Properties.OfType <ForeignKey>().Skip(1).First().ForeignKeyColumns[0].ReferredColumn);
    }
Beispiel #4
0
    public void HistoryWithEtlRunInfo()
    {
        var model         = new TestModel();
        var configuration = new DwhBuilderConfiguration()
        {
            HistoryTableNamePostfix = "Hist",
        };

        model.GetTable("Secondary", "Pet").EtlRunInfoDisabled();
        model.GetTable("dbo", "People").HasHistoryTable();

        DataDefinitionExtenderMsSql2016.Extend(model, configuration);

        var etlRunTable = model.GetTable("dbo", "_EtlRun");

        Assert.IsNotNull(etlRunTable);

        Assert.AreEqual(3 + 4 + 1, model.GetTable("dbo", "People").Columns.Count);
        Assert.IsTrue(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunInsertColumnName));
        Assert.IsTrue(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunUpdateColumnName));
        Assert.IsTrue(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunFromColumnName));
        Assert.IsTrue(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.EtlRunToColumnName));
        Assert.IsTrue(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.ValidFromColumnName));
        Assert.IsFalse(model.GetTable("dbo", "People").Columns.ContainsKey(configuration.ValidToColumnName));

        Assert.AreEqual(1 + 3 + 4 + 2, model.GetTable("dbo", "PeopleHist").Columns.Count);
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey("PeopleHistID"));
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey(configuration.EtlRunInsertColumnName));
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey(configuration.EtlRunUpdateColumnName));
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey(configuration.EtlRunFromColumnName));
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey(configuration.EtlRunToColumnName));
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey(configuration.ValidFromColumnName));
        Assert.IsTrue(model.GetTable("dbo", "PeopleHist").Columns.ContainsKey(configuration.ValidToColumnName));

        Assert.AreEqual(3, model.GetTable("Secondary", "Pet").Columns.Count);
    }