Skip to content

Commit a2486fc

Browse files
author
Colin Young
committed
Apply identity to Id column even with custom name
1 parent 009d120 commit a2486fc

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/Serilog.Sinks.MSSqlServer/Sinks/MSSqlServer/SqlTableCreator.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ private static string GetSqlFromDataTable(string tableName, DataTable table)
5555
foreach (DataColumn column in table.Columns)
5656
{
5757
sql.AppendFormat("[{0}] {1}", column.ColumnName, SqlGetType(column));
58-
if (column.ColumnName.ToUpper().Equals("ID"))
58+
if (column.ColumnName.ToUpper().Equals("ID") || column.AutoIncrement)
5959
sql.Append(" IDENTITY(1,1) ");
6060
if (numOfColumns > i)
6161
sql.AppendFormat(", ");

test/Serilog.Sinks.MSSqlServer.Tests/CustomStandardColumnNames.cs

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,18 @@ public void CustomIdColumn()
3535

3636
infoSchema.Should().Contain(columns => columns.ColumnName == customIdName);
3737
}
38+
39+
// verify Id column has identity property
40+
using (var conn = new SqlConnection(DatabaseFixture.LogEventsConnectionString))
41+
{
42+
var isIdentity = conn.Query<IdentityQuery>($"SELECT COLUMNPROPERTY(object_id('{logTableName}'), '{customIdName}', 'IsIdentity') AS IsIdentity");
43+
isIdentity.Should().Contain(i => i.IsIdentity == 1);
44+
}
45+
}
46+
47+
internal class IdentityQuery
48+
{
49+
public int IsIdentity { get; set; }
3850
}
3951

4052
[Fact]
@@ -48,13 +60,21 @@ public void DefaultIdColumn()
4860
var sink = new MSSqlServerSink(DatabaseFixture.LogEventsConnectionString, logTableName, 1, TimeSpan.FromSeconds(1), null, true, options);
4961

5062
// assert
63+
var idColumnName = "Id";
5164
using (var conn = new SqlConnection(DatabaseFixture.MasterConnectionString))
5265
{
5366
conn.Execute($"use {DatabaseFixture.Database}");
5467
var logEvents = conn.Query<InfoSchema>($@"SELECT COLUMN_NAME AS ColumnName FROM {DatabaseFixture.Database}.INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{logTableName}'");
5568
var infoSchema = logEvents as InfoSchema[] ?? logEvents.ToArray();
5669

57-
infoSchema.Should().Contain(columns => columns.ColumnName == "Id");
70+
infoSchema.Should().Contain(columns => columns.ColumnName == idColumnName);
71+
}
72+
73+
// verify Id column has identity property
74+
using (var conn = new SqlConnection(DatabaseFixture.LogEventsConnectionString))
75+
{
76+
var isIdentity = conn.Query<IdentityQuery>($"SELECT COLUMNPROPERTY(object_id('{logTableName}'), '{idColumnName}', 'IsIdentity') AS IsIdentity");
77+
isIdentity.Should().Contain(i => i.IsIdentity == 1);
5878
}
5979
}
6080

0 commit comments

Comments
 (0)