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);
当试图在数据库中保留西里尔字母表时,数据库中只保存了倒置的问号。
模型长这样
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);