C# 使用LINQ到SQL插入NVARCHAR字符串
问题就在这里。我在SQL Server数据库中有一个表C# 使用LINQ到SQL插入NVARCHAR字符串,c#,sql-server,linq,entity-framework,datacontext,C#,Sql Server,Linq,Entity Framework,Datacontext,问题就在这里。我在SQL Server数据库中有一个表 CREATE TABLE Users ( [userID] INT PRIMARY KEY IDENTITY, [userName] NVARCHAR(255) NOT NULL, [userEmail] VARCHAR(127) NOT NULL, [userComment] NVARCHAR(2083) NOT NULL,
CREATE TABLE Users
(
[userID] INT PRIMARY KEY IDENTITY,
[userName] NVARCHAR(255) NOT NULL,
[userEmail] VARCHAR(127) NOT NULL,
[userComment] NVARCHAR(2083) NOT NULL,
[userLanguage] VARCHAR(63) NOT NULL,
[regTime] DATE NOT NULL,
[hash] VARCHAR(255) NOT NULL
);
我遇到的具体问题是NVARCHAR
我有以下C#代码:
问题是插入数据库的行如下所示:
???? dbogatov@wpi.edu ???
俄语(西里尔文)符号显示为?
有没有办法让DataContext
插入正确的NVARCHAR
非常感谢您的帮助。请尝试在数据库连接字符串中添加字符编码
“Charset=utf8”
。应该如下所示:
<add name="MyEntities" connectionString="metadata=res://*/Metadata;provider=Your Provide;provider connection string="server=ServerIP;User Id=UID;password=PASS;Persist Security Info=True;database=DB Name; Charset=utf8"" providerName="Provider Name" /></connectionStrings>
应该适用于您的情况。通过将数据库的排序规则设置为正确的值来检查数据库的排序规则
看看
我希望这个排序规则就是你需要的拉丁语1\u General\u CI\u AI我解决了它!我犯了这么愚蠢的错误,真丢脸 事实证明,当我更改db方案以支持NVARCHAR时,我并没有更新.DBML文件。所以实体框架仍然将我的文本视为VARCHAR
当我更新它时,一切都正常。你能确保
story
变量具有正确的编码值吗?当你说“插入数据库的行看起来像这样”时,你用什么来检查数据库?谢谢!我照你们说的做了,但服务器给出了运行时错误。我的新连接字符串看起来像这样的数据源=SQL5007.Smarterasp.net;初始目录=***;用户Id=***;密码=**;字符集=utf-8;由于单词“CharSet”和“UTF-8”的不同变体,我看到的是:描述:处理请求时发生异常。此外,在执行第一个异常的自定义错误页时发生另一个异常。请求已被终止。你确定给我MSSQL(不是MySQL)字符串的写参数吗?非常感谢。您正在使用SQL Server吗?哪个版本?我尝试过更改某些列的排序规则:ALTER TABLE Users ALTER COLUMN userName nvarchar(128)COLLATE Latin1_General_CI_AI NOT NULL;它不起作用。一切都还在???即使我添加了新行。谢谢大家!@Dima4kaBogatov尝试为整个数据库更改它这在我身上发生过一次使用阿拉伯语我将存储过程、表和视图中的所有VARCHAR更改为NVARCHAR,并且(这里是诀窍!!!)更新了我的.DBML文件。
<add name="MyEntities" connectionString="metadata=res://*/Metadata;provider=Your Provide;provider connection string="server=ServerIP;User Id=UID;password=PASS;Persist Security Info=True;database=DB Name; Charset=utf8"" providerName="Provider Name" /></connectionStrings>