EF Core Oracle NVARCHAR2 - 无法将西里尔文保存到数据库

EF Core Oracle NVARCHAR2 - Can't save cyrillic to db

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

模型长这样

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

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

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

删除.IsUnicode(false);

参考: https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.metadata.builders.propertybuilder-1.isunicode?view=efcore-5.0