SimulationInfoCache.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Entity;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using DataSimulation.Repostory.EFContext;
  9. using DataSimulation.Repostory.Model;
  10. namespace DataSimulation.Repostory
  11. {
  12. public static class SimulationInfoCache
  13. {
  14. /// <summary>
  15. /// 获取数据库所有仿真航迹信息
  16. /// </summary>
  17. /// <returns></returns>
  18. public static async Task<List<SimulationInfo>> GetAllAsync()
  19. {
  20. try
  21. {
  22. List<SimulationInfo> list = new List<SimulationInfo>();
  23. var dir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "DbPart");
  24. if (!Directory.Exists(dir)) return list;
  25. var yearDirs = Directory.EnumerateDirectories(dir).OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name));//年目录,倒叙排列
  26. foreach (var yearDir in yearDirs)
  27. {
  28. //每一天的db文件,倒序排列
  29. var dayFiles = Directory.EnumerateFiles(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, yearDir), "*.db").OrderByDescending(p => Convert.ToInt32(new DirectoryInfo(p).Name.Substring(0, 4)));
  30. foreach (var dayFile in dayFiles)
  31. {
  32. using (SimulationPartContext db = SimulationPartContext.GetContext(dayFile))
  33. {
  34. list.AddRange(await db.SimulationInfos.ToListAsync());
  35. }
  36. }
  37. }
  38. return list;
  39. }
  40. catch (Exception ex)
  41. {
  42. Serilog.Log.Error(ex, "加载仿真航迹信息异常");
  43. return null;
  44. }
  45. }
  46. }
  47. }