gpt4 book ai didi

c# - 使用 Firebird 2.5 进行 EF Core 编码

转载 作者:行者123 更新时间:2023-12-04 08:58:23 26 4
gpt4 key购买 nike

我正在将 Delphi + FireDac 制作的遗留系统迁移到 C# + EF。由于它是一个遗留系统,已经有一个包含许多记录的数据库(许多记录没有编码信息)。
当我使用 C# + EF 获取包含特殊字符的记录时,这些字符无法正确显示。
我该如何解决这个问题?
C#
enter image description here
德尔福
enter image description here
MainWindow.xaml.cs - ButtonClick

private void Button_Click(object sender, RoutedEventArgs e)
{
string appPath = AppContext.BaseDirectory;
string connectionString = $"database=localhost/3050:{appPath}\\database\\test.fdb;user=sysdba;password=masterkey";
using (AppDbContext con = new AppDbContext(connectionString))
{
Product p = con.Products.First();
lblText.Text = p.Name;
}
}
AppDbContext.cs
public class AppDbContext : DbContext
{
private readonly string _connectionString;
public DbSet<Product> Products { get; set; }

public AppDbContext(string connectionString)
{
_connectionString = connectionString;
}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
base.OnConfiguring(optionsBuilder);

optionsBuilder.UseFirebird(_connectionString);
}
}
产品.cs
[Table("PRODUCTS")]
public class Product
{
[Column("ID")]
public int Id { get; set; }
[Column("NAME")]
public string Name { get; set; }
}
Complete C# project code

最佳答案

对于 firebird,大多数情况下,可以使用 CharSet UTF-8 处理特殊字符的问题。内connectionString ,您可能需要包含 charset=utf8 .
添加更新:
感谢@Felipe Godinho 的反馈,似乎 charset=win1252已被发现是 CharSet 的另一个有值(value)的选项,在处理在 Firebird 上运行的旧数据库系统时值得尝试。

关于c# - 使用 Firebird 2.5 进行 EF Core 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63693951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com