通过上下文(Entity Framework Core)无法将Unicode表情符号写入SQL Server表格

7

我在 SQL Server 数据库中有一个表,其中有一列 ReviewText 的数据类型是 NVARCHAR(MAX)

如果我通过 SQL 查询使用前缀 N'' 插入或更新行,例如:

UPDATE [dbo].[Reviews] 
SET ReviewText = N'It's OK. ' 
WHERE Id = [id]

它的运行非常好,可以将笑脸写入表格中。

但如果我从代码中插入它:

var review = _context.UserReview.FirstOrDefault(x => x.Id == [id]);
review.ReviewText = "It's OK. ";

这段代码将不带笑脸的字符串It's OK. ??存储到列中。

如何在代码中修复这个问题?


2
ReviewText列在EF中是否声明为Unicode?您是通过数据库还是调试器来检查保存的值? - Imantas
1
我无法重现您所描述的情况。在一个使用Entity Framework Core的.Net Core项目中,我能够使用相同的方法将笑脸写入数据库。 - Fluous
1
我解决了这个问题。问题出在实体映射模型上。我已经将entity.Property(e => e.ReviewText).HasColumnType("text");更改为entity.Property(e => e.ReviewText).HasColumnType("nvarchar(max)");(你是对的@Imantas) - Hennadii Feshchuk
1个回答

4
我修复了这个问题。问题出在实体模型映射上。我已经进行了更改。
entity.Property(e => e.ReviewText).HasColumnType("text");

为了

entity.Property(e => e.ReviewText).HasColumnType("nvarchar(max)"); 

感谢大家!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接