代码第一个问题,用西里尔字母播种数据
本文关键字:数据 问题 第一个 代码 | 更新日期: 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文件的字符集。有两种方法可以做到这一点。
- 在Visual Studio编辑器中关闭Configuration.cs,然后在解决方案资源管理器中右键单击该文件,选择"打开方式…"->"带编码的CSharp编辑器",然后从列表中选择"Unicode(UTF-8带签名)-代码页65001"选项(如果此代码页会显示一些"中文"符号,请尝试其他代码页)。现在修复你的cyrilic章节并保存Configuration.cs文件
- 选择"文件"->"高级保存选项",使用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,带签名)编码和行尾-当前设置为数据种子的方法保存文件。