Это поведение зависит от различных параметров.Сначала в ваших базах данных, таких как SQL Server или MySQL, а затем это зависит от параметров сортировки, таких как utf8, latin1 и все.
Я выполнил оба случая на моей базе данных MySQL, вот результат.
Модель:
public virtual string field1 { get; set; }
[StringLength(1000)]
public virtual string field2 { get; set; }
Генерируемая миграция:
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "field1",
table: "Category",
nullable: true);
migrationBuilder.AddColumn<string>(
name: "field2",
table: "Category",
maxLength: 1000,
nullable: true);
}
Таблица:
![enter image description here](https://i.stack.imgur.com/IF0C9.png)
Итак, он создал поля VARCHAR(1000)
и LONGTEXT
.Опять же, длина данных, которые она содержит, полностью зависит от сопоставления / кодирования поля.
LONGTEXT
размер: 4 294 967 295 = (2 ^ 32−1) байт = 4 ГиБ
LONGTEXT
может содержать 4 294 967 295 байт данных.UTF-8 содержит многобайтовые символы.Поэтому, если вы заполните поле, используя только датский символ «Ø», вы получите только 2 147 483 647 символов, поскольку этот символ UTF-8 состоит из двух байтов.Если вы заполните его знаком «а», вы получите 4 294 967 295 символов.