Я попытался вызвать db.savechange () после завершения рекурсии, но безуспешно.
blockquote>SavingChanges () сразу предполагает улучшить производительность приложения вместо того, чтобы делать изменения для каждого дочернего элемента. Это не имеет смысла. На рекурсивном вы должны только изменить состояние объекта на измененное. Также вы можете отключить отслеживание изменений.
Configuration.AutoDetectChangesEnabled = false; context.Entry(entity).State = EntityState.Modified;
Кроме того, вы должны получать все данные из базы данных одновременно. На рекурсивном не стоит идти в базу данных. Это не лучшая практика.
Я думаю, что Вы хотите utime(2)
. Это должно быть достаточно:
utime(filename, NULL);
В документах говорится:
int utime(const char *filename, const struct utimbuf *times);
[...]
utime () системный вызов изменяет времена доступа и время изменения inode, указанного именем файла к actime и modtime полям времен соответственно.
Если времена
NULL
, затем времена доступа и время изменения файла установлены на текущее время.
utimes (), вероятно, как сделать это. utime () является устаревшим.
Вещи как это тривиальны для определения инструментов использования как strace.
strace touch -t 01010911 xxx
.
.
open("xxx", O_WRONLY|O_NONBLOCK|O_CREAT|O_NOCTTY|O_LARGEFILE, 0666) = 0
utimes("/proc/self/fd/0", {1230829860, 0}) = 0
Я думаю, что необходимо посмотреть на utime ()/utimes () системный вызов. Не в моем нормальном компьютере, таким образом, я не могу искать детали, я боюсь.