带有实体框架的Unicode [英] Unicode with Entity Framework
问题描述
我有一个带有nvarchar字段的表(MS SQL Server 2008 R2)。为了进行测试,此代码可以正常工作:
I have a table with nvarchar field (MS SQL Server 2008 R2). For testing, this code works fine:
Update [Screenshots] set name=N'Значение' where id=230246
现在我创建了实体框架模型,我将Unicode设置为True
right now I created Entity Framework model, I have set Unicode as True
然后我尝试更新我的记录:
then I try to update my record:
public void Put(FormDataCollection formData)
{
string filename = formData.Get("filename");
var screenshot = c.Screenshots.Where(p => p.filename == filename).FirstOrDefault();
if (screenshot != null)
{
screenshot.name = formData.Get("description");
c.SaveChanges();
}
}
但是我得到了 ?????而不是unicode值。怎么做?我知道AsNonUnicode方法,但是该方法仅适用于LINQ。
but I got "?????" instead of unicode value. How to do it? I know about AsNonUnicode method, but this method works only for LINQ.
推荐答案
-
Are您确定
formData.Get( description)
返回UTF-8字符串(未在某处转换)吗?
Are you sure that
formData.Get("description")
returns UTF-8 string (that it isn't converted somewhere)?
您在实体框架中采用的方法是什么?代码优先/设计优先/数据库优先?
尝试删除数据库并重新创建-删除数据库,然后在设计器中右键单击-> 从模型生成数据库...
What is your approach in entity framework? Code-first/Design-first/Database-first?
Try to remove database and recreate - remove database and then in designer right click -> Generate database from model...
从Nu-get程序包管理器中获取Entity Framework Profiler,并查看向数据库发送的查询。
Get Entity Framework Profiler from Nu-get package manager and see what query is sending to database.
这篇关于带有实体框架的Unicode的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!