Мне нужно руководство по добавлению / обновлению записей SQL с использованием EF. Допустим, я пишу приложение, которое хранит информацию о файлах на жестком диске в базе данных EF4. Когда вы нажимаете кнопку, она сканирует все файлы по указанному пути (может быть, весь диск) и сохраняет в базе данных такую информацию, как размер файла, дата изменения и т. Д. Иногда файл уже будет записан с предыдущего запуска, поэтому его свойства должны быть обновлены; иногда пакет файлов будет обнаружен в первый раз, и его необходимо будет добавить.
Я использую EF4 и ищу наиболее эффективный способ добавления новой информации о файле и обновления существующих записей. Насколько я понимаю, когда я нажимаю кнопку поиска и файлы обнаруживаются, мне придется проверять наличие файловой сущности, извлекать ее поле идентификатора и использовать ее для добавления или обновления связанной информации; но если он еще не существует, мне нужно будет создать дерево, которое представляет его и связанные с ним объекты (например, путь к папке), и добавить его. Мне также придется обрабатывать слияние объекта пути к папке.
Мне приходит в голову, что если существует много миллионов файлов, как это может быть на сервере, загрузка всей базы данных в контекст не идеальна и не практична. Таким образом, для каждого файла, возможно, мне придется совершить круговую поездку к базе данных на диске, чтобы определить, существует ли уже запись, получить ее идентификатор, если она существует, а затем еще одну поездку для обновления. Есть ли более эффективный способ вставить / обновить несколько файловых объектов в одной поездке в БД? Если бы существовал метод контекста Entity, например, «Вставить, если он не существует, и обновить, если он есть», то я мог бы заключить несколько транзакций в транзакцию?
Я предполагаю, что это будет довольно распространенным требованием, как это лучше всего сделать в EF? Любые мысли будут оценены. (О, моя БД SQLITE, если это имеет значение)