RHDWContext.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data.Entity;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using SQLite.CodeFirst;
  8. using System.Data.Entity.ModelConfiguration.Conventions;
  9. using System.Data.Entity.Infrastructure.Interception;
  10. using XdCxRhDW.Repostory.Model;
  11. using System.IO;
  12. namespace XdCxRhDW.Repostory.EFContext
  13. {
  14. /// <summary>
  15. /// 基础表上下文(id为int)
  16. /// </summary>
  17. public class RHDWContext: DbContext
  18. {
  19. public RHDWContext() : base("DbCon") //配置使用的连接名
  20. {
  21. }
  22. protected override void OnModelCreating(DbModelBuilder modelBuilder)
  23. {
  24. this.Database.Log = msg =>
  25. {
  26. };
  27. modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
  28. modelBuilder.Configurations.AddFromAssembly(typeof(RHDWContext).Assembly);
  29. var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<RHDWContext>(modelBuilder);
  30. Database.SetInitializer(sqliteConnectionInitializer);
  31. DbInterception.Add(new SqliteInterceptor());//拦截器
  32. base.OnModelCreating(modelBuilder);
  33. }
  34. public DbSet<TaskInfo> TaskInfos { set; get; }
  35. public DbSet<TxInfo> TxInfos { get; set; }
  36. public DbSet<SatInfo> SatInfos { get; set; }
  37. public DbSet<TargetInfo> TargetInfos { get; set; }
  38. //public DbSet<StationRes> StationRes { get; set; }
  39. //public DbSet<CxRes> CxRes { get; set; }
  40. //public DbSet<CgRes> CgRes { get; set; }
  41. //public DbSet<PosRes> PosRes { get; set; }
  42. public DbSet<SysSetings> SysSetings { get; set; }
  43. }
  44. /// <summary>
  45. /// 分区表上下文(id为long)
  46. /// </summary>
  47. public class RHDWPartContext : DbContext
  48. {
  49. /// <summary>
  50. /// 分区表构造函数
  51. /// </summary>
  52. /// <param name="dayStr">db文件名称(含绝对路径)</param>
  53. public RHDWPartContext(string dbFile)
  54. {
  55. string dayStr = Path.GetFileNameWithoutExtension(dbFile);
  56. FileInfo f = new FileInfo(dbFile);
  57. var year = Path.GetFileName(f.Directory.Parent.Name);
  58. Directory.CreateDirectory("DbPart");
  59. Directory.CreateDirectory($"DbPart\\{year}");
  60. base.Database.Connection.ConnectionString = $"Data Source=|DataDirectory|\\DbPart\\{year}\\{dayStr}";
  61. }
  62. /// <summary>
  63. /// 分区表构造函数
  64. /// </summary>
  65. /// <param name="sigTime">信号时刻</param>
  66. public RHDWPartContext(DateTime sigTime)
  67. {
  68. Directory.CreateDirectory("DbPart");
  69. Directory.CreateDirectory($"DbPart\\{sigTime.Year}");
  70. base.Database.Connection.ConnectionString = $"Data Source=|DataDirectory|\\DbPart\\{sigTime.Year}\\{sigTime:MMdd}.db";
  71. }
  72. protected override void OnModelCreating(DbModelBuilder modelBuilder)
  73. {
  74. this.Database.Log = msg =>
  75. {
  76. };
  77. modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
  78. modelBuilder.Configurations.AddFromAssembly(typeof(RHDWPartContext).Assembly);
  79. var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists<RHDWPartContext>(modelBuilder);
  80. Database.SetInitializer(sqliteConnectionInitializer);
  81. DbInterception.Add(new SqliteInterceptor());//拦截器
  82. base.OnModelCreating(modelBuilder);
  83. }
  84. public DbSet<XlInfo> XlInfos { set; get; }
  85. public DbSet<StationRes> StationRes { get; set; }
  86. public DbSet<CxRes> CxRes { get; set; }
  87. public DbSet<CgRes> CgRes { get; set; }
  88. public DbSet<PosRes> PosRes { get; set; }
  89. }
  90. }