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

C# EF核心迁移错误的拉丁SQL编码,c#,entity-framework-core,asp.net-core-1.0,C#,Entity Framework Core,Asp.net Core 1.0,我有一个带有EF7的ASP.NETCore1.0项目。 当我使用SQL命令和拉丁字符添加迁移时,在更新数据库时,会将它们替换为“?” 让我们看一个例子: public partial class TestEncodingMigration : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.Sql(@"some text wit

我有一个带有EF7的ASP.NETCore1.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');
PM>dnx ef迁移脚本-c MyDbContext
某些带有重音的文本:?
;
去
插入到[_EFMigrationHistory]([MigrationId]、[ProductVersion])
数值(N'20160216162901_TestEncodingMigration',N'7.0.0-rc1-16348');

如您所见,所有拉丁字符都已替换为“?”

正如所讨论的,这是RC1的一个缺陷,计划在RC2中解决它

我遇到了同样的问题,我通过使用UTF-8编码再次保存迁移文件来解决它

添加迁移似乎创建了使用ANSI编码的文件


因此,请在记事本中打开migration*.cs,然后单击文件->另存为,并在底部将编码设置为UTF-8,然后覆盖。

谢谢!或者更简单:在VisualStudio中,右键单击.cs文件->使用..打开->使用编码的编辑器->选择UTF-8->保存文件