我想使用Fluent API或数据注释能够自动为字符串列生成数据库迁移类ntext
而不是固定长度字符串。我该怎么做?
使用Entity Framework v6,Code First和SQL Server Compact 4时,给出一个简单的C#类,例如:
public class GameFile
{
public string Id { get; set; }
public string FileData { get; set; }
public int FileSize { get; set; }
}
然后,在添加新迁移时:
add-migration first
生成的迁移类默认为string
列,最大长度为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);
当通过update-database
更新数据库时,该表将包含一个名为FileData
的{{1}}类型的列。
我尝试将nvarchar(4000)
和/或MaxLength
的属性添加到Column
属性,但生成的迁移代码没有变化。
FileData
我知道如果我手动编辑迁移代码以明确声明[MaxLength, Column(TypeName = "ntext")]
public string FileData { get; set; }
:
storeType
正确创建结果表。
答案 0 :(得分:4)
似乎修复了Entity Framefork v6.1.3的错误。
以下定义按预期工作 - 创建ntext
列。
[Column(TypeName = "ntext")]
public string FileData { get; set; }