首先使用代码在 MySQL 中创建 NVARCHAR 列?
Posted
技术标签:
【中文标题】首先使用代码在 MySQL 中创建 NVARCHAR 列?【英文标题】:Create an NVARCHAR column in MySQL using code first? 【发布时间】:2018-09-21 11:48:30 【问题描述】:因此,与 SQL Server 不同,在 mysql 中,以下属性会创建 LONGTEXT
类型的列:
public string Name get; set;
我想要一个 NVARCHAR(255)
列,所以我尝试了以下方法:
//[DataType("NVARCHAR"), StringLength(255)] // creates a varchar(255) column.
[DataType("NVARCHAR"), MaxLength(255)] // creates a varchar(255) column.
public string Name get; set;
我还使用 Fluent API 尝试了以下操作:
modelBuilder.Entity<MyEntity>()
.Property(p => p.Name)
.HasColumnType("NVARCHAR")
.HasMaxLength(255); // still creates a varchar(255) column.
..和:
modelBuilder.Entity<MyEntity>()
.Property(p => p.Name)
.HasColumnType("NVARCHAR(255)");
这会导致InvalidOperationException
带有以下消息:
在 MySql 中找不到存储类型“NVARCHAR(255)” 提供者清单
我做错了什么吗?使用代码优先创建 nvarchar 列的正确方法是什么?
【问题讨论】:
mysql 没有nvarchar
类型。
你是对的,原来它只是 MySQL Workbench 中的一个别名,它使用 utf8
排序规则映射到 varchar。
【参考方案1】:
MySql 没有NVARCHAR
类型。如需替代解决方案,请咨询:
mysql equivalent data types
【讨论】:
谢谢,我被 MySQL Workbench 中的NVARCHAR
别名误导了。以上是关于首先使用代码在 MySQL 中创建 NVARCHAR 列?的主要内容,如果未能解决你的问题,请参考以下文章
MySQL错误代码:在MySQL Workbench中创建表期间出现1064 [关闭]
使用 docker-compose 在 mysql 中创建特定模式