Start Debugging

EF Core 11

60 статей · Страница1из6

Как держать отдельные папки миграций для нескольких DbContext в одном проекте EF Core

Передайте --output-dir один раз для каждого DbContext, и EF Core будет складывать все последующие миграции в эту папку и пространство имён. Почему раскладка по умолчанию получается перекошенной, откуда берётся CS0111 при общей папке, как перенести существующие миграции и когда стоит разделить таблицу истории.

Как настроить самоссылающуюся связь многие-ко-многим (подписчики и подписки) в EF Core

Моделируем подписчиков и подписки на одной сущности User в EF Core 11: что строит конвенция, почему SQL Server молча превращает один внешний ключ соединительной таблицы в ClientCascade, как сопоставить явную сущность Follow с временной меткой и как удалить пользователя без ошибок 547 и 1785.

Что определяет, создаст ли EF Core для столбца SQL Server `date` тип `DateOnly` или `DateTime` при scaffold?

Это определяет версия EF Core у провайдера SQL Server в вашем стартовом проекте: EF Core 7 и более ранние создают для date тип DateTime, EF Core с 8 по 11 создают DateOnly. Здесь показано сопоставление типов, которое принимает решение, измеренный результат для EF Core 7, 8, 10 и 11 RC 2, а также два способа вернуть DateTime, не переключив столбец незаметно на datetime2.

Что такое скомпилированная модель в EF Core 11 и когда стоит её включать

Скомпилированная модель - это сгенерированный C#-код, который воссоздаёт вашу модель EF Core без запуска OnModelCreating. Замеры на EF Core 11 RC1: загрузка модели сокращается с 714 мс до 215 мс при 500 сущностях, но путь через MSBuild (заменивший EFOptimizeContext) медленнее, устаревшие модели ломаются молча, а фильтры запросов блокируют генерацию.

Что такое shadow-свойство в EF Core 11 и почему оно появилось в моей миграции?

Shadow-свойство - это столбец, который EF Core отслеживает без соответствующего CLR-свойства. Почему EF Core 11 их создаёт (отсутствующие FK-свойства, неверно названные FK, несовпадение типов, раздвоенные связи), как заметить столбец вида BlogId1 в миграции, как исправить каждую причину и как использовать shadow-свойства намеренно.

Исправление: Invalid column name 'Value' при использовании SqlQueryRaw<T> для скалярного результата в EF Core

EF Core оборачивает скалярный SqlQuery<T> в подзапрос и выбирает столбец с именем Value, как только вы добавляете First, Where, Max или Single. Задайте в SQL псевдоним AS Value или сначала материализуйте результат.

Исправление: There is already an object named 'X' in the database после сброса миграций EF Core

После удаления папки Migrations и создания нового InitialCreate EF Core не знает, что ваши таблицы уже существуют. Удалите базу данных для разработки или запишите новую миграцию в __EFMigrationsHistory, не выполняя её.

Как добавить уникальный индекс на JSON-сопоставленное свойство в EF Core 11 (SQL Server и SQLite)

HasIndex(...).IsUnique() на члене ToJson() не обеспечивает уникальность в EF Core 11 RC 1: SQL Server отбрасывает IsUnique, а SQLite индексирует весь документ. Вынесите значение JSON в вычисляемый столбец и поставьте уникальный индекс на него.

Как настроить собственную плюрализацию имён таблиц в dotnet ef dbcontext scaffold через IPluralizer

Таблица с именем Gas превращается в сущность Ga. Замените встроенный плюрализатор Humanizer собственной реализацией IPluralizer, зарегистрируйте её через IDesignTimeServices в стартовом проекте и узнайте, почему TryAddSingleton там молча ничего не делает.

Как гарантировать идемпотентную обработку сообщений в EF Core 11, когда одно и то же сообщение получают два экземпляра приложения

Проверка на существование в обработчике не та защита, за которую вы её принимаете. Поставьте уникальный индекс на таблицу inbox, пишите маркер в том же SaveChanges, что и бизнес-изменение, и пусть победителя выбирает база данных. Плюс ловушка с ExecuteUpdate, которая молча сводит всё это на нет.
Вперёд