Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 32 additions & 2 deletions EF6.PG.Tests/EntityFrameworkMigrationTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,20 @@ public void DatabaseExistsCreateDelete()

[Test]
public void AddColumnOperation()
{
var operations = new List<MigrationOperation>();
operations.Add(new AddColumnOperation("tableName", new ColumnModel(PrimitiveTypeKind.Double)
{
Name = "columnName",
IsNullable = false
}));
var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, _backendVersion.ToString());
Assert.AreEqual(1, statments.Count());
Assert.AreEqual("ALTER TABLE \"tableName\" ADD \"columnName\" float8 NOT NULL DEFAULT 0", statments.ElementAt(0).Sql);
}

[Test]
public void AddColumnOperationNullable()
{
var operations = new List<MigrationOperation>();
operations.Add(new AddColumnOperation("tableName", new ColumnModel(PrimitiveTypeKind.Double)
Expand Down Expand Up @@ -262,7 +276,23 @@ public void AlterColumnOperation()
var operations = new List<MigrationOperation>();
operations.Add(new AlterColumnOperation("tableName", new ColumnModel(PrimitiveTypeKind.Double)
{
Name = "columnName"
Name = "columnName",
IsNullable = false
}, false));
var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, _backendVersion.ToString());
Assert.AreEqual(3, statments.Count());
Assert.AreEqual("ALTER TABLE \"tableName\" ALTER COLUMN \"columnName\" TYPE float8", statments.ElementAt(0).Sql);
Assert.AreEqual("ALTER TABLE \"tableName\" ALTER COLUMN \"columnName\" SET NOT NULL", statments.ElementAt(1).Sql);
Assert.AreEqual("ALTER TABLE \"tableName\" ALTER COLUMN \"columnName\" SET DEFAULT 0", statments.ElementAt(2).Sql);
}

[Test]
public void AlterColumnOperationNullable()
{
var operations = new List<MigrationOperation>();
operations.Add(new AlterColumnOperation("tableName", new ColumnModel(PrimitiveTypeKind.Double)
{
Name = "columnName",
}, false));
var statments = new NpgsqlMigrationSqlGenerator().Generate(operations, _backendVersion.ToString());
Assert.AreEqual(3, statments.Count());
Expand Down Expand Up @@ -335,7 +365,7 @@ public void CreateTableOperation()
Assert.AreEqual("CREATE SCHEMA IF NOT EXISTS \"someSchema\"", statments.ElementAt(0).Sql);
else
Assert.AreEqual("CREATE SCHEMA \"someSchema\"", statments.ElementAt(0).Sql);
Assert.AreEqual("CREATE TABLE \"someSchema\".\"someTable\"(\"SomeString\" varchar(233) NOT NULL,\"AnotherString\" text,\"SomeBytes\" bytea,\"SomeLong\" serial8,\"SomeDateTime\" timestamp)", statments.ElementAt(1).Sql);
Assert.AreEqual("CREATE TABLE \"someSchema\".\"someTable\"(\"SomeString\" varchar(233) NOT NULL DEFAULT '',\"AnotherString\" text,\"SomeBytes\" bytea,\"SomeLong\" serial8,\"SomeDateTime\" timestamp)", statments.ElementAt(1).Sql);
}

[Test]
Expand Down
10 changes: 10 additions & 0 deletions EF6.PG/NpgsqlMigrationSqlGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,11 @@ protected virtual void Convert(AlterColumnOperation alterColumnOperation)
throw new NotImplementedException("Not supporting creating IsIdentity for " + alterColumnOperation.Column.Type);
}
}
else if(alterColumnOperation.Column.IsNullable==false && alterColumnOperation.Column.ClrDefaultValue != null)
{
sql.Append(" SET DEFAULT ");
AppendValue(alterColumnOperation.Column.ClrDefaultValue, sql);
}
else
sql.Append(" DROP DEFAULT");
AddStatment(sql);
Expand Down Expand Up @@ -551,6 +556,11 @@ void AppendColumn(ColumnModel column, StringBuilder sql)
break;
}
}
else if (column.IsNullable == false && column.ClrDefaultValue != null)
{
sql.Append(" DEFAULT ");
AppendValue(column.ClrDefaultValue, sql);
}
}

void AppendColumnType(ColumnModel column, StringBuilder sql, bool setSerial)
Expand Down