Start Debugging

EF Core

105 статей · Страница5из11

Как генерировать первичный ключ из последовательности базы данных при вставке в EF Core 11

Переводим ключ с IDENTITY на последовательность SQL Server в EF Core 11 через UseSequence: точный SQL, который выдаёт EF, почему явные значения ключа вдруг работают без IDENTITY_INSERT, последовательность bigint для колонки int и пропуски, которые нужно закладывать в проект.

Как использовать IDbContextFactory<T> из singleton-сервиса в Blazor

Singleton не может внедрить DbContext, но может внедрить IDbContextFactory<T>, потому что AddDbContextFactory по умолчанию регистрирует фабрику как singleton. Создавайте и освобождайте по одному контексту на вызов и никогда не сохраняйте экземпляр.

Исправление: dotnet tool install --global dotnet-ef выдаёт ошибку

Все способы, которыми dotnet tool install --global dotnet-ef падает на SDK .NET 10, с точным сообщением и кодом возврата для каждого: уже установлен, версия не найдена, понижение версии заблокировано, конфликт shim, недоступный фид NuGet и несоответствие среды выполнения, которое ломается уже после успешной установки.

Как вызвать хранимую процедуру и отобразить её результаты в EF Core 11

Используйте FromSql на DbSet, когда процедура возвращает полные строки сущности, Database.SqlQuery<T> при проекции и ExecuteSql, когда она не возвращает ничего. Никогда не присоединяйте оператор LINQ к EXEC и не читайте выходной параметр до того, как ридер будет освобождён.

Как переименовать таблицу в миграции EF Core 11 без потери данных

EF Core генерирует RenameTable, когда вы меняете имя таблицы, но DropTable плюс CreateTable, когда вы переименовываете класс сущности. Здесь разобрано, как различать эти два случая, приём с ToTable, который делает переименование класса бесплатным, и баг переименования столбцов, который молча меняет ваши данные местами.

Как реализовать оптимистичную конкурентность с токеном rowversion в EF Core 11

Добавляем токен конкурентности rowversion в EF Core 11: настройка через [Timestamp] и IsRowVersion, SQL, который EF действительно генерирует, перехват DbUpdateConcurrencyException, побеждает база vs побеждает клиент vs слияние, отсоединённые API с ETag и пять ловушек, которые молча отключают всю защиту.
Назад Вперёд