I'd like to either using the Fluent API or data annotations be able to automatically generate a database migration class for a string column as an ntext
rather than a fixed length string. How would I do that?
When using Entity Framework v6, with Code First, and SQL Server Compact 4, given a simple C# class such as:
public class GameFile
{
public string Id { get; set; }
public string FileData { get; set; }
public int FileSize { get; set; }
}
Then, when adding a new migration:
add-migration first
the resulting migration class defaults to a string
column of maximum length 4000
.
CreateTable(
"dbo.GameFiles",
c => new
{
Id = c.String(nullable: false, maxLength: 4000),
FileData = c.String(maxLength: 4000),
FileSize = c.Int()
})
.PrimaryKey(t => t.Id);
When the database is updated via update-database
, the table will have a column named FileData
of type nvarchar(4000)
.
I've tried adding an attribute of MaxLength
and/or Column
to the FileData
property, but there's no change in the generated migration code.
[MaxLength, Column(TypeName = "ntext")]
public string FileData { get; set; }
I know if I manually edit the migration code to explicitly declare the storeType
:
FileData = c.String(storeType: "ntext")
that the resulting table is created properly.