Start Debugging

Тег: ef-core

89 статей · Страница1из9

Как настроить самоссылающуюся связь многие-ко-многим (подписчики и подписки) в 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.
Исправление: конфликт версий NU1608 / NU1107 между Pomelo.EntityFrameworkCore.MySql и EF Core 10
Pomelo 9.0.0 допускает только EF Core Relational 9.0.x, а сборки для EF Core 10 нет. Оставьте все пакеты EF Core на 9.0.x или перейдите на Microting.EntityFrameworkCore.MySql 10.0.x. Подавление предупреждения приводит к падению при запуске.
Fix: Settings file 'DotnetToolSettings.xml' was not found in the package
Пакет инструмента нацелен на более новую версию .NET, чем SDK, выполняющий установку, или вообще не является инструментом .NET. Используйте более новый SDK, зафиксируйте версию инструмента с подходящей папкой tools или принудительно задайте --framework.
Как проверить, отслеживается ли сущность в DbContext, перед её подключением в EF Core
Используйте DbSet.Local.FindEntry(key), чтобы спросить у трекера изменений, отслеживается ли сущность с заданным ключом, без обращения к базе данных и без перебора. Почему Entry(entity).State вводит в заблуждение, почему Find выполняет запрос, и проверенный помощник AttachOrMerge для EF Core 10.
Что такое скомпилированная модель в 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-свойства намеренно.
AddDbContextPool или AddDbContextFactory для параллельного выполнения запросов EF Core
AddDbContextPool выдаёт один scoped DbContext на область DI, поэтому не может выполнять два запроса одновременно. AddDbContextFactory и AddPooledDbContextFactory дают контекст на каждый вызов, а именно это нужно параллельным запросам. Замеры на EF Core 11 RC 1: пулированная фабрика создаёт контекст за 342 нс и 40 Б против 17 мкс и 44 КБ.
Исправление: There is already an object named 'X' in the database после сброса миграций EF Core
После удаления папки Migrations и создания нового InitialCreate EF Core не знает, что ваши таблицы уже существуют. Удалите базу данных для разработки или запишите новую миграцию в __EFMigrationsHistory, не выполняя её.
Как задать параметры сеанса PostgreSQL, такие как search_path или statement_timeout, для каждого подключения EF Core с Npgsql
Однократно выполненный SET стирается командой DISCARD ALL в тот момент, когда Npgsql возвращает подключение в пул. Передайте search_path и statement_timeout в стартовом пакете через ключевые слова строки подключения Search Path и Options, а при необходимости используйте ALTER ROLE или перехватчик ConnectionOpened, и узнайте, почему UsePhysicalConnectionInitializer молча теряет свой SET.
Вперёд