Start Debugging

Тег: ef-core-11

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

Что определяет, создаст ли 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, которая молча сводит всё это на нет.
Как согласовать запись в базу данных и загрузку в Azure Blob Storage в рамках одного запроса ASP.NET Core
Транзакции, охватывающей SQL Server и Blob Storage, не существует. Загружайте по имени, которое база данных уже знает, фиксируйте вторым шагом, компенсируйте при сбое, а окно после аварии пусть подчищает фоновая уборка. Плюс перегрузка UploadAsync, которая молча превращает условное создание в перезапись.
Как задать собственные соглашения об именовании первичных ключей, внешних ключей и индексов в миграциях EF Core 11
Переименуйте все PK_, FK_, AK_ и IX_, которые генерирует EF Core 11, с помощью одного IModelFinalizingConvention, сохраните приоритет явно заданных имён, уложитесь в ограничение длины идентификатора и избегите перестроения кластеризованного индекса, которое следующая миграция сгенерирует для существующей базы данных.
Вперёд