Unicode与实体框架

Ole*_* Sh 5 unicode entity-framework

我有一个带有nvarchar字段的表(MS SQL Server 2008 R2).为了测试,这段代码工作正常:

Update [Screenshots] set name=N'????????' where id=230246
Run Code Online (Sandbox Code Playgroud)

现在我创建了Entity Framework模型,我将Unicode设置为True

在此输入图像描述

然后我尝试更新我的记录:

    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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

但我得到了"?????" 而不是unicode值.怎么做?我知道AsNonUnicode方法,但此方法仅适用于LINQ.

Woj*_*lik 3

  1. 您确定formData.Get("description")返回 UTF-8 字符串(它没有在某处转换)吗?

  2. 您在实体框架中的方法是什么?代码优先/设计优先/数据库优先?
    尝试删除数据库并重新创建 - 删除数据库,然后在设计器中右键单击 ->Generate database from model...

  3. 从 Nu-get 包管理器获取 Entity Framework Profiler 并查看正在发送到数据库的查询。