EF核心迁移错误的拉丁语SQL编码

时间:2016-02-16 17:05:38

标签: c# entity-framework-core asp.net-core-1.0

我有一个带有EF7的ASP.NET Core 1.0项目。 当我使用SQL命令和拉丁字符添加迁移时,我将它们替换为“?”更新数据库时。

让我们看一个例子:

public partial class TestEncodingMigration : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        migrationBuilder.Sql(@"some text with latin chars : á é í ñ");
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {
    }
}

这是我从该迁移中得到的脚本:

PM> dnx ef migrations script <some prev migration> -c MyDbContext

some text with accent: ? ? ? ?
;

GO

INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
VALUES (N'20160216162901_TestEncodingMigration', N'7.0.0-rc1-16348');

如您所见,所有拉丁字符都被“?”

取代

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,我通过UTF-8编码再次保存迁移文件解决了这个问题。

似乎add-migration会创建使用ANSI编码的文件。

因此,在记事本中打开迁移* .cs,然后在文件 - >&gt;另存为,在底部设置编码为UTF-8然后覆盖。

答案 1 :(得分:2)

这是RC1的错误,如here所述,并计划在RC2中解决