diff --git a/src/SqlSharpener.Tests/MetaBuilderTest.cs b/src/SqlSharpener.Tests/MetaBuilderTest.cs
index bdaf15c..9948068 100644
--- a/src/SqlSharpener.Tests/MetaBuilderTest.cs
+++ b/src/SqlSharpener.Tests/MetaBuilderTest.cs
@@ -1,9 +1,12 @@
using System;
using System.Linq;
+using Microsoft.SqlServer.Dac.Model;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace SqlSharpener.Tests
{
+ using SqlSharpener.Model;
+
[TestClass]
public class MetaBuilderTest
{
@@ -355,7 +358,7 @@ CONSTRAINT [PK_id] PRIMARY KEY CLUSTERED ([id] ASC),
CONSTRAINT [FK_tb2_tb1] FOREIGN KEY ([tb1Id]) REFERENCES [dbo].[tb1] ([id]))");
Assert.AreEqual(2, builder.Tables.Count());
Assert.AreEqual("tb1", builder.Tables.First().Name);
-
+
Assert.AreEqual(1, builder.Tables.First().Columns.Count());
Assert.AreEqual(true, builder.Tables.First().Columns.First().IsPrimaryKey);
Assert.AreEqual(false, builder.Tables.First().Columns.First().IsForeignKey);
@@ -410,5 +413,67 @@ public void ViewWithExpressionTest()
Assert.AreEqual(1, builder.Views.Count());
Assert.AreEqual(1, builder.Views.First().Columns.Count());
}
+
+
+ [TestMethod]
+ public void TableWithHistoryTable()
+ {
+ var builder = new MetaBuilder(SqlServerVersion.Sql130);
+ builder.LoadModel(@"
+create table [dbo].[tb1] (
+ [Id] int identity(1,1) not null,
+ [SysStartTime] DATETIME2(7) GENERATED ALWAYS AS ROW START HIDDEN CONSTRAINT [DF_Employee_SysStartTime] DEFAULT (sysutcdatetime()) NOT NULL,
+ [SysEndTime] DATETIME2(7) GENERATED ALWAYS AS ROW END HIDDEN CONSTRAINT [DF_Employee_SysEndTime] DEFAULT (CONVERT([datetime2],'9999-12-31 23:59:59.9999999')) NOT NULL,
+ CONSTRAINT [PK_tb1] PRIMARY KEY CLUSTERED ([Id] ASC),
+ PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])
+) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE=[dbo].[tb1_history]))");
+
+ Table table;
+ Column column;
+
+ Assert.AreEqual(2, builder.Tables.Count());
+
+ // tb1
+ table = builder.Tables.First();
+ Assert.AreEqual("tb1", table.Name);
+ Assert.AreEqual(false, table.IsAutoGeneratedHistoryTable);
+ Assert.AreEqual(3, table.Columns.Count());
+
+ column = table.Columns.First();
+ Assert.AreEqual("Id", column.Name);
+ Assert.AreEqual(ColumnGeneratedAlwaysType.None, column.GeneratedAlwaysType);
+ Assert.AreEqual(false, column.IsHidden);
+
+ column = table.Columns.Skip(1).First();
+ Assert.AreEqual("SysStartTime", column.Name);
+ Assert.AreEqual(ColumnGeneratedAlwaysType.GeneratedAlwaysAsRowStart, column.GeneratedAlwaysType);
+ Assert.AreEqual(true, column.IsHidden);
+
+ column = table.Columns.Skip(2).First();
+ Assert.AreEqual("SysEndTime", column.Name);
+ Assert.AreEqual(ColumnGeneratedAlwaysType.GeneratedAlwaysAsRowEnd, column.GeneratedAlwaysType);
+ Assert.AreEqual(true, column.IsHidden);
+
+ // tb1_history
+ table = builder.Tables.Skip(1).First();
+ Assert.AreEqual("tb1_history", table.Name);
+ Assert.AreEqual(true, table.IsAutoGeneratedHistoryTable);
+ Assert.AreEqual(3, table.Columns.Count());
+
+ column = table.Columns.First();
+ Assert.AreEqual("Id", column.Name);
+ Assert.AreEqual(ColumnGeneratedAlwaysType.None, column.GeneratedAlwaysType);
+ Assert.AreEqual(false, column.IsHidden);
+
+ column = table.Columns.Skip(1).First();
+ Assert.AreEqual("SysStartTime", column.Name);
+ Assert.AreEqual(ColumnGeneratedAlwaysType.None, column.GeneratedAlwaysType);
+ Assert.AreEqual(false, column.IsHidden);
+
+ column = table.Columns.Skip(2).First();
+ Assert.AreEqual("SysEndTime", column.Name);
+ Assert.AreEqual(ColumnGeneratedAlwaysType.None, column.GeneratedAlwaysType);
+ Assert.AreEqual(false, column.IsHidden);
+ }
}
}
diff --git a/src/SqlSharpener.Tests/SqlSharpener.Tests.csproj b/src/SqlSharpener.Tests/SqlSharpener.Tests.csproj
index 556eba1..45bf3c7 100644
--- a/src/SqlSharpener.Tests/SqlSharpener.Tests.csproj
+++ b/src/SqlSharpener.Tests/SqlSharpener.Tests.csproj
@@ -35,36 +35,28 @@
4
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Contracts.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.Data.Tools.Schema.Sql.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Schema.Sql.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.Data.Tools.Utilities.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Schema.Tasks.Sql.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.SqlServer.Dac.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Schema.Utilities.Sql.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.SqlServer.Dac.Extensions.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Utilities.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.SqlServer.TransactSql.ScriptDom.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.SqlServer.Dac.dll
- True
-
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.SqlServer.Dac.Extensions.dll
- True
-
-
- ..\packages\Microsoft.SqlServer.TransactSql.ScriptDom.12.0.1\lib\net40\Microsoft.SqlServer.TransactSql.ScriptDom.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.SqlServer.Types.dll
True
diff --git a/src/SqlSharpener.Tests/packages.config b/src/SqlSharpener.Tests/packages.config
index 1f34600..5ef38e0 100644
--- a/src/SqlSharpener.Tests/packages.config
+++ b/src/SqlSharpener.Tests/packages.config
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file
diff --git a/src/SqlSharpener/Model/Column.cs b/src/SqlSharpener/Model/Column.cs
index d081a88..97a2724 100644
--- a/src/SqlSharpener/Model/Column.cs
+++ b/src/SqlSharpener/Model/Column.cs
@@ -2,8 +2,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
using Microsoft.SqlServer.TransactSql.ScriptDom;
namespace SqlSharpener.Model
@@ -198,6 +196,10 @@ from r in t.Value
///
public bool IsForeignKey { get; private set; }
+ public dac.ColumnGeneratedAlwaysType GeneratedAlwaysType { get; private set; }
+
+ public bool IsHidden { get; private set; }
+
///
/// Gets or sets the relationships where this column is a foreign key.
///
@@ -223,6 +225,9 @@ private void SetProperties(dac.TSqlObject tSqlObject)
this.Precision = dac.Column.Precision.GetValue(tSqlObject);
this.Scale = dac.Column.Scale.GetValue(tSqlObject);
this.Length = dac.Column.Length.GetValue(tSqlObject);
+
+ this.GeneratedAlwaysType = dac.Column.GeneratedAlwaysType.GetValue(tSqlObject);
+ this.IsHidden = dac.Column.IsHidden.GetValue(tSqlObject);
}
}
}
diff --git a/src/SqlSharpener/Model/Table.cs b/src/SqlSharpener/Model/Table.cs
index 599f00c..bfa1c41 100644
--- a/src/SqlSharpener/Model/Table.cs
+++ b/src/SqlSharpener/Model/Table.cs
@@ -46,6 +46,13 @@ public Table(dac.TSqlObject tSqlObject, IEnumerable primaryKeys,
columns.Add(column);
}
this.Columns = columns;
+
+ if (tSqlObject.ObjectType.Name == "Table")
+ {
+ // these properties are not valid on 'TableType'
+ this.IsAutoGeneratedHistoryTable = dac.Table.IsAutoGeneratedHistoryTable.GetValue(tSqlObject);
+ this.MemoryOptimized = dac.Table.MemoryOptimized.GetValue(tSqlObject);
+ }
}
///
@@ -63,5 +70,16 @@ public Table(dac.TSqlObject tSqlObject, IEnumerable primaryKeys,
/// The columns.
///
public IEnumerable Columns { get; private set; }
+
+
+ ///
+ /// Gets a value indicating whether the table is an auto generated history table.
+ ///
+ public bool IsAutoGeneratedHistoryTable { get; private set; }
+
+ ///
+ /// Gets a value indicating whether the table is a memory optimized table.
+ ///
+ public bool MemoryOptimized { get; set; }
}
}
diff --git a/src/SqlSharpener/SqlSharpener.csproj b/src/SqlSharpener/SqlSharpener.csproj
index 3aaed41..11fc45d 100644
--- a/src/SqlSharpener/SqlSharpener.csproj
+++ b/src/SqlSharpener/SqlSharpener.csproj
@@ -31,36 +31,28 @@
4
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Contracts.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.Data.Tools.Schema.Sql.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Schema.Sql.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.Data.Tools.Utilities.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Schema.Tasks.Sql.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.SqlServer.Dac.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Schema.Utilities.Sql.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.SqlServer.Dac.Extensions.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.Data.Tools.Utilities.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.SqlServer.TransactSql.ScriptDom.dll
True
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.SqlServer.Dac.dll
- True
-
-
- ..\packages\Microsoft.SqlServer.DACFx.12.0.2603.2\lib\Microsoft.SqlServer.Dac.Extensions.dll
- True
-
-
- ..\packages\Microsoft.SqlServer.TransactSql.ScriptDom.12.0.1\lib\net40\Microsoft.SqlServer.TransactSql.ScriptDom.dll
+
+ ..\packages\Microsoft.SqlServer.DacFx.x64.130.3485.1\lib\net40\Microsoft.SqlServer.Types.dll
True
diff --git a/src/SqlSharpener/packages.config b/src/SqlSharpener/packages.config
index 1f34600..5ef38e0 100644
--- a/src/SqlSharpener/packages.config
+++ b/src/SqlSharpener/packages.config
@@ -1,5 +1,5 @@
-
-
+
+
\ No newline at end of file