using System; using System.Collections.Generic; using System.Data.Entity; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using DataSimulation.Repostory.EFContext; using DataSimulation.Repostory.Model; namespace DataSimulation.Repostory { public static class SimulationInfoCache { /// /// 获取数据库所有仿真航迹信息 /// /// public static async Task> GetAllAsync() { try { List list = new List(); var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart"); if (!Directory.Exists(dir)) return list; var yearDirs = Directory.EnumerateDirectories(dir).OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列 foreach (var yearDir in yearDirs) { //每一天的db文件,倒序排列 var dayFiles = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, yearDir), "*.db").OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name.Substring(0, 4))); foreach (var dayFile in dayFiles) { using (SimulationPartContext db = SimulationPartContext.GetContext(dayFile)) { list.AddRange(await db.SimulationInfos.ToListAsync()); } } } return list; } catch (Exception ex) { Serilog.Log.Error(ex, "加载仿真航迹信息异常"); return null; } } } }