// -------------------------------------------------------------------- // キャッシュ更新(追加) // records の ParentFolder はすべて同じ前提 // -------------------------------------------------------------------- public void UpdateCache(List <TFound> records) { String parentFolder = records.First().ParentFolder; // 追加しようとしているキャッシュと同じ親フォルダーの旧キャッシュ削除 IQueryable <TFound> removes = Founds.Where(x => x.ParentFolder == parentFolder); Founds.RemoveRange(removes); // 追加しようとしているキャッシュとドライブレターが異なるキャッシュ削除 removes = Founds.Where(x => !x.ParentFolder.Contains(YlCommon.DriveLetter(parentFolder))); Founds.RemoveRange(removes); SaveChanges(); // 新キャッシュ追加 foreach (TFound record in records) { // Uid を初期化して自動的に Uid を振ってもらうようにする record.Uid = 0; } Founds.AddRange(records); // キャッシュ管理テーブル更新 TCacheHeader?cacheHeader = CacheHeaders.FirstOrDefault(x => x.ParentFolder == parentFolder); Boolean needAdd = false; if (cacheHeader == null) { cacheHeader = new() { ParentFolder = parentFolder, }; needAdd = true; } cacheHeader.UpdateTime = YlCommon.UtcNowMjd(); if (needAdd) { CacheHeaders.Add(cacheHeader); } SaveChanges(); }