C# Unicode插入在EF6迁移中不起作用
在迁移中放入一些insert语句时,EF6/SQL Server 2008出现问题 insert SQL放在C# Unicode插入在EF6迁移中不起作用,c#,sql-server,entity-framework-6,C#,Sql Server,Entity Framework 6,在迁移中放入一些insert语句时,EF6/SQL Server 2008出现问题 insert SQL放在Up方法中,该方法包含一些特殊字符,如下所示,但它们在web上以UTF8编码显示为? INSERT INTO [Items] ([Id],[Code],[Name]) VALUES (NEWID(), 'transport', 'ả'), (NEWID(), 'travel', 'ệ'), (NEWID(), 'social', 'ể'); 如果我们在Seed
Up
方法中,该方法包含一些特殊字符,如下所示,但它们在web上以UTF8编码显示为?
INSERT INTO [Items] ([Id],[Code],[Name])
VALUES (NEWID(), 'transport', 'ả'),
(NEWID(), 'travel', 'ệ'),
(NEWID(), 'social', 'ể');
如果我们在Seed
方法上切换到使用C#code并创建实体,那么它就可以正常工作。迁移文件.cs和配置文件.cs都以Unicode UTF8编码保存
INSERT INTO [Items] ([Id],[Code],[Name])
VALUES (NEWID(), 'transport', 'ả'),
(NEWID(), 'travel', 'ệ'),
(NEWID(), 'social', 'ể');
我做了一些调查,但没有什么好消息。您知道如何使迁移工作正常吗?非常感谢 @unninten it is nvarchar for all text columns如果您使用CodeFirst方法,您将尝试删除所有表并再次运行它。SQL Server将
nvarchar
存储为UTF-16。SQL Server中不支持UTF-8。如果要确保SQL Server使用Unicode(nvarchar
),必须在字符串文本之前提供N
前缀-使用(NEWID(),N'transport',N'ả'),代码>谢谢@marc_s,这正是修复方法!