【发布时间】: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。
标签: c# mysql .net entity-framework entity-framework-6