使用Entity Framework Code First和DBMigration时生成ntext / nvarchar列

时间:2014-02-15 22:10:47

标签: c# entity-framework sql-server-ce entity-framework-6

我想使用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

正确创建结果表。

1 个答案:

答案 0 :(得分:4)

似乎修复了Entity Framefork v6.1.3的错误。

以下定义按预期工作 - 创建ntext列。

[Column(TypeName = "ntext")]
public string FileData { get; set; }