代码第一个问题,用西里尔字母播种数据

本文关键字:数据 问题 第一个 代码 | 更新日期: 2023-09-27 18:29:03

我正在使用种子方法来填充数据库。有些对象具有cyrillic属性。示例:

context.Wines.AddOrUpdate(new Wine()
       {
           Id = 1,
           Name = "Шардоне",
           etc........................................

对象是在数据库中正确创建的,但当我在MS SQL管理工作室中检查数据库时,葡萄酒的名称不是"Аардоне",而是显示为"Öabläîíå"。

奇怪的是,当我在我的创业类中创建这样的葡萄酒时:

var db = new WineSystemDbContext();
var ShardoneWine = new Wine { Name = "Шардоне};
db.Wines.Add(ShardoneWine);

所有内容都在数据库的cyrillic中正确显示。

你知道是什么原因造成的吗?

代码第一个问题,用西里尔字母播种数据

您可以在连接字符串中指定您的connectin的字符集。只需将此部分添加到您的连接中:

charset=UTF8;

如果没有结果,您可以尝试更改Configuration.cs文件的字符集。有两种方法可以做到这一点。

  1. 在Visual Studio编辑器中关闭Configuration.cs,然后在解决方案资源管理器中右键单击该文件,选择"打开方式…"->"带编码的CSharp编辑器",然后从列表中选择"Unicode(UTF-8带签名)-代码页65001"选项(如果此代码页会显示一些"中文"符号,请尝试其他代码页)。现在修复你的cyrilic章节并保存Configuration.cs文件
  2. 选择"文件"->"高级保存选项",使用UTF-8编码的种子数据方法保存文件

如果使用ntext列类型,也可能会出现问题。

为了存储例如西里尔字母字符,它们必须是nvarchar(x)至少根据我的经验。

我也看到了同样的现象:varchar(100)的数据很好,但???出来了——但nvarchar(100)的数据似乎一切都很好。

在查询中需要添加deN(到告诉SQL Server它是unicode),例如:

SELECT * FROM Wines WHERE someColumn = N'sometext'

我找到了一个解决方案!

以下是我所做的(在另一个主题中发现)

例如,在解决方案资源管理器中打开您的Configuration.cs文件,复制种子方法并在Windows记事本中粘贴代码(临时)。

下一步,如果打开了Visual Studio中的Configuration.cs,请关闭它,然后在解决方案资源管理器中右键单击该文件,然后选择"打开方式。。。"->"带编码的CSharp编辑器",然后从列表中选择"Unicode(UTF-8带签名)-代码页65001"选项(当这个选项会显示一些"中文"字符时,请尝试其他选项)。

将种子方法替换为记事本中的方法。保存、删除数据库中的现有数据并更新数据库。您的国家/地区字符现在应该正确显示。

干杯。"

感谢大家的帮助

我得到了以下帮助:选择"File"->"Advanced Save Options",并使用UNICODE(UTF-8,带签名)编码和行尾-当前设置为数据种子的方法保存文件。