Spec-Zone.ru › MySQL Connectors 1.0

7.2.3 Настройка наборов символов и сортировок в EF Core

В этом разделе описывается, как изменить набор символов, сортировку или оба параметра на уровне сущности и свойства сущности в модели Entity Framework (EF) Core. Внесенные в модель изменения влияют на таблицы и столбцы, сгенерированные из вашего кода.

Существует два различных подхода к настройке наборов символов и сортировок в сценариях кода-первый. Атрибуты данных позволяют применять атрибуты непосредственно к вашей модели EF Core. Кроме того, вы можете переопределить метод OnModelCreating в классе DbContext и использовать гибкий API кода-первый для настройки определенных характеристик модели. Ниже приведен пример каждого подхода.

Дополнительную информацию о поддерживаемых наборах символов и сортировках см. в .

Использование атрибутов данных

Прежде чем вы сможете аннотировать модель EF Core атрибутами набора символов и сортировки, добавьте ссылку на следующий пространство имен в файл, содержащий вашу модель сущности.

Примечание

Пространство имен MySQL.EntityFrameworkCore.DataAnnotations относится к Connector/NET 8.0.23 и более поздним версиям. Более ранние версии коннектора требуют пространство имен MySQL.Data.EntityFrameworkCore.DataAnnotations.

using MySql.EntityFrameworkCore.DataAnnotations;

Добавьте один или несколько атрибутов [MySqlCharset] для хранения данных с использованием различных наборов символов и один или несколько атрибутов [MySqlCollation] для выполнения сравнений в соответствии с различными сортировками. В следующем примере класс ComplexKey представляет сущность (или таблицу), а Key1, Key2 и CollationColumn представляют свойства сущности (или столбцы).

[MySqlCharset("utf8")]
public class ComplexKey
{
  [MySqlCharset("latin1")
  public string Key1 { get; set; }

  [MySqlCharset("latin1")]
  public string Key2 { get; set; }

  [MySqlCollation("latin1_spanish_ci")]
  public string CollationColumn { get; set; }
}

Использование гибкого API кода-первый

Добавьте следующую директиву для ссылки на методы, связанные с настройкой наборов символов и сортировок.

Примечание

Пространство имен MySQL.EntityFrameworkCore.Extensions относится к Connector/NET 8.0.23 и более поздним версиям. Более ранние версии коннектора требуют пространство имен MySQL.Data.EntityFrameworkCore.Extensions.

using MySQL.EntityFrameworkCore.Extensions;

При использовании подхода с гибким API модель EF Core остается неизменной. Гибкий API переопределяет любые правила, установленные атрибутом.

public class ComplexKey
{
  public string Key1 { get; set; }

  public string Key2 { get; set; }

  public string CollationColumn { get; set; }
}

В этом примере сущность и различные свойства сущности перенастраиваются, включая стандартные сопоставления с наборами символов и сортировками. Этот подход использует методы ForMySQLHasCharset и ForMySQLHasCollation.

public class MyContext : DbContext
{
  public DbSet<ComplexKey> ComplexKeys { get; set; }

  protected override void OnModelCreating(ModelBuilder modelBuilder)
  {
    modelBuilder.Entity<ComplexKey>(e =>
    {
      e.HasKey(p => new { p.Key1, p.Key2 });
      e.ForMySQLHasCollation("ascii_bin"); // defining collation at Entity level
      e.Property(p => p.Key1).ForMySQLHasCharset("latin1"); // defining charset in a property
      e.Property(p => p.CollationColumnFA).ForMySQLHasCollation("utf8_bin"); // defining collation in a property
    });
  }
}

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/connector-net-en/connector-net-entityframework-core-charset.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API