无法通过上下文(实体框架核心)将unicode(表情符号)写入SQL Server表

Hen*_*huk 5 c# sql-server entity-framework-core

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

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

UPDATE [dbo].[Reviews] 
SET ReviewText = N'It's OK. ' 
WHERE Id = [id]
Run Code Online (Sandbox Code Playgroud)

它效果很好,它会在桌子上写笑脸.

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

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

代码将在It's OK. ??没有笑脸的情况下存储到列中.

如何在代码中修复此问题?

Hen*_*huk 4

我解决了这个问题。问题出在实体模型映射中。我变了

entity.Property(e => e.ReviewText).HasColumnType("text");
Run Code Online (Sandbox Code Playgroud)

entity.Property(e => e.ReviewText).HasColumnType("nvarchar(max)"); 
Run Code Online (Sandbox Code Playgroud)

谢谢大家!