EntityFramework 更新或插入中文或非英文文本。

7

实际上在使用SqlCommand类时,我并没有使用框架或Linq,只是输入SQL语句,例如:insert into table values(N'sample')。其实我不知道N是什么意思,但它适用于中文和其他语言,否则会插入一些问号。

但是当我使用EntityFramework时,这种框架总是插入一些问号,我想问如何解决这个问题。

N是指Unicode吗? 你能给我一个EntityFramework使用这种东西的例子吗?


顺便说一句,我测试了包含希伯来语的 EF,它运行得很好。中文包含在 Unicode 中吗? - gdoron
1
可能取决于数据库的结构。如果您正在使用 SQL Server - 您的列是 nvarchar 还是 nchar?在 EF 中,字符串属性需要设置为 Unicode 为 true。您是使用 CodeFirst 还是 Database/Model first? 注:EF 是指 Entity Framework (实体框架),CodeFirst 和 Database/Model first 是 Entity Framework 开发方法论中的两种不同的开发方式。 - Pawel
1
你需要提供更多关于你的映射和数据库的信息。 - Ladislav Mrnka
4个回答

5
  1. 在 .edmx 表格中,选择列 -> 检查其属性并将 Unicode 设置为 true
  2. 如果您正在使用 Code First 方法,请重新生成表格
  3. 检查您的数据库表,它应该是 nvarchar 或 ntext 数据类型

这样 EF 就会保存 Unicode 字符。

enter image description here


这解决了我的问题...从“????”文本到实际工作的字符串。谢谢! - OldTrain

2

我曾经遇到过与尼泊尔语言相关的同样问题。我不得不将sql服务器列的数据类型从varchar转换为nvarchar,然后在实体框架映射中刷新我的*.edmx文件。然后它正常工作了。

varchar(255) => nvarchar(255)

varchar(MAX) => nvarchar(MAX)

在edmx文件中右键单击该表映射并刷新。保存更改。


这对我有效,我将类型从varchar更改为nvarchar并更新了实体。 - Muhammad Bilal

0

我们刚刚将数据类型更改为nchar()或nvarchar,它就可以工作了。它能够存储除英语以外的任何语言的数据。


0

请确保在托管 SQL Server 的服务器上安装了中文语言包。


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