首先使用代码在 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错误代码:在MySQL Workbench中创建表期间出现1064 [关闭]

使用 docker-compose 在 mysql 中创建特定模式

在 XAMPP 中创建数据库(MySQL PDO)并将其与 php 代码连接

从java在mysql中创建数据库

使用 C# 在 MySQL 中创建存储过程