【问题标题】:EF Core Oracle NVARCHAR2 - Can't save cyrillic to dbEF Core Oracle NVARCHAR2 - 无法将西里尔文保存到数据库
【发布时间】:2019-07-12 17:09:07
【问题描述】:

当试图在数据库中保留西里尔字母时,数据库中只保存倒置问号。

模型是这样的

public class Roles {
    public string Name { get; set; }
    public string Appname { get; set; }
    public string Description { get; set; }
}

创建这样的上下文

modelBuilder.Entity<Roles>(entity =>
{
                entity.HasKey(e => new { e.Name, e.Appname });

                entity.ToTable("ROLES");

                entity.HasIndex(e => new { e.Name, e.Appname })
                    .HasName("PK_ROLES")
                    .IsUnique();

                entity.Property(e => e.Name)
                    .HasColumnName("NAME")
                    .HasMaxLength(100)
                    .IsUnicode(false);

                entity.Property(e => e.Appname)
                    .HasColumnName("APPNAME")
                    .HasMaxLength(20)
                    .IsUnicode(false);

                entity.Property(e => e.Description)
                    .HasColumnName("DESCRIPTION")
                    //.HasMaxLength(256)
                    //.IsUnicode(true);
                    .HasColumnType("NVARCHAR2(256)");
});

试过了,注释掉了什么和下一行

The table looks created correctly

以及这段代码的执行

using (var context = new FrontContext())
{
    var roles = context.Roles.ToList();
    var role = new Roles{ 
               Name        = $"ADMINS{DateTime.Now.ToString("HHmmss")}", 
               Appname     = "TESTAPP", 
               Description = "тестовая роль"};
    context.Add(role);
    context.SaveChanges();
}

...gives such a picture

【问题讨论】:

  • 截图(我猜来自 SSMS)可能是在撒谎。您是否尝试过回读 (var roles = new FrontContext().Roles.ToList();) 并在 VS locals/watch 窗口中检查结果?
  • 是的,读取通过 EF 保存的数据也会返回倒置问题。使用 Toad 保存在数据库中的数据被正确读取。
  • 刚刚注意到oracle 标签。该代码在 SqlServer 上工作得很好,所以它可能是一个(Oracle 的典型)提供程序错误。特别是它是测试版。您最好检查更新或……好吧,基本上您无能为力,因为他们不提供支持 afaik。

标签: oracle entity-framework-core cyrillic


【解决方案1】:

检查thread:4291600@Oracle,他们已修复。

只需将 Oracle.EntityFrameworkCore 更新到 2.19.80 即可。

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 2016-08-02
    • 1970-01-01
    • 2013-08-06
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多