2012-09-28 45 views
6

实际上,在我没有使用框架或LINQ之前,只需键入sql语句与Sqlcommand类,我键入insert into table values(N'sample') 实际上我不知道什么是N,但它适用于中文和其他语言,否则,会插入一些问号。EntityFramework更新或插入中文或非英文文本

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

N表示Unicode? 你能给我一个EntityFramework使用这种事情的例子吗?

+0

是的,你可以问...... :) – gdoron

+0

顺便说一句,我测试EF与希伯来文在它工作得很好。中文是否包含在unicode中? – gdoron

+1

它可能取决于数据库的外观。如果您使用的是SQL Server - 您的列是nvarchar还是nchar?在EF中,字符串属性需要将Unicode设置为true。您是先使用CodeFirst还是数据库/模型? – Pawel

回答

0

确保在装有用于中文的sqlserver的服务器上安装了语言包。

4
    中的.edmx表,选择列
  1. - >检查其属性,并设置统一到
  2. 重新产生真正的表,如果你是在代码第一次Apporach工作
  3. 检查你的数据库表,它应该是为nvarchar或ntext数据类型

这样EF将保存unicode字符。

enter image description here

+0

这解决了我的问题...从“????”文本到真正有效的字符串谢谢 – OldTrain

0

,我们只是改变了数据类型为nchar()或nvarchar和它的工作。它能够以除英语以外的任何语言存储数据。

2

我对尼泊尔语有完全相同的问题。我必须将sqlserver的数据类型从varchar转换为nvarchar,然后在实体框架映射中刷新我的* .edmx文件。然后它运行良好。

VARCHAR(255)=>为nvarchar(255)

VARCHAR(MAX)=>为nvarchar(MAX)

在EDMX文件右键点击该表映射和刷新。保存更改。