Сценарии и проблемы
Сценарии для миграций | ||||||||||
Табличные указания (Хинты), явные блокировки. | Варианты на основе механизма Interception EF | Перехватчики. Entity Framework with NOLOCK How to implement Select For Update in EF Core | |||||||||
Использование конструктора типа | 1) По умолчанию фреймворк будет использовать конструктор без параметров, чтобы фреймворк попытался выбрать подходящий конструктор, конструктора без параметров быть не должно. (При этом достаточно создать конструктор с необязательным параметром) 2) В качестве параметров конструктора нельзя передавать навигационные свойства, а также комплексные/вложенные свойства. | |||||||||
Изменение сущности без загрузки из БД. |
Change Tracking | Отслеживание изменений Дополнение: рассматривается сценарий с отслеживанием изменений по умолчанию (с использованием автоматического определения изменений через сравнение, а не IPropertyChanged) | |||||||||
Про AsNoTracking, Attach и ошибку "The instance of entity type cannot be tracked because another instance with the same key value for {'key'} is already being tracked..." | Вводные:Делаем следующую выборку из 2 таблиц Change Tracking | Отслеживание изменений
Завершение:В случае, если попытаться прикрепить полученный графы (Entity1 и Entity2) объектов к другому контексту, то можно получить ошибку из-за двух экземпляров LinkedEntity с одинаковым первичным ключом. UDP: в случае, если запрос один можно использовать метод AsNoTrackingWithIdentityResolution | |||||||||
Сравнение операторов | AddAsync() vs Add() in EF Core https://stackoverflow.com/questions/47135262/addasync-vs-add-in-ef-core | |||||||||
Организация поиска в локальном наборе (Change Tracking | Отслеживание изменений) по альтернативным ключам. | ||||||||||
Выполнение соединения (поиска) на основании DbSet и InMemory коллекции. | JOIN локальной коллекции и DbSet в Entity Framework EntityFrameworkCore.MemoryJoin |