using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Text; using System.Threading.Tasks; using SQLite.CodeFirst; using System.Data.Entity.ModelConfiguration.Conventions; using System.Data.Entity.Infrastructure.Interception; using XdCxRhDW.Repostory.Model; using System.IO; namespace XdCxRhDW.Repostory.EFContext { /// /// 基础表上下文(id为int) /// public class RHDWContext: DbContext { public RHDWContext() : base("DbCon") //配置使用的连接名 { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { this.Database.Log = msg => { }; modelBuilder.Conventions.Remove(); modelBuilder.Configurations.AddFromAssembly(typeof(RHDWContext).Assembly); var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists(modelBuilder); Database.SetInitializer(sqliteConnectionInitializer); DbInterception.Add(new SqliteInterceptor());//拦截器 base.OnModelCreating(modelBuilder); } public DbSet TaskInfos { set; get; } public DbSet TxInfos { get; set; } public DbSet SatInfos { get; set; } public DbSet TargetInfos { get; set; } //public DbSet StationRes { get; set; } //public DbSet CxRes { get; set; } //public DbSet CgRes { get; set; } //public DbSet PosRes { get; set; } public DbSet SysSetings { get; set; } } /// /// 分区表上下文(id为long) /// public class RHDWPartContext : DbContext { /// /// 分区表构造函数 /// /// db文件名称(含绝对路径) public RHDWPartContext(string dbFile) { string dayStr = Path.GetFileNameWithoutExtension(dbFile); FileInfo f = new FileInfo(dbFile); var year = Path.GetFileName(f.Directory.Parent.Name); Directory.CreateDirectory("DbPart"); Directory.CreateDirectory($"DbPart\\{year}"); base.Database.Connection.ConnectionString = $"Data Source=|DataDirectory|\\DbPart\\{year}\\{dayStr}"; } /// /// 分区表构造函数 /// /// 信号时刻 public RHDWPartContext(DateTime sigTime) { Directory.CreateDirectory("DbPart"); Directory.CreateDirectory($"DbPart\\{sigTime.Year}"); base.Database.Connection.ConnectionString = $"Data Source=|DataDirectory|\\DbPart\\{sigTime.Year}\\{sigTime:MMdd}.db"; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { this.Database.Log = msg => { }; modelBuilder.Conventions.Remove(); modelBuilder.Configurations.AddFromAssembly(typeof(RHDWPartContext).Assembly); var sqliteConnectionInitializer = new SqliteCreateDatabaseIfNotExists(modelBuilder); Database.SetInitializer(sqliteConnectionInitializer); DbInterception.Add(new SqliteInterceptor());//拦截器 base.OnModelCreating(modelBuilder); } public DbSet XlInfos { set; get; } public DbSet StationRes { get; set; } public DbSet CxRes { get; set; } public DbSet CgRes { get; set; } public DbSet PosRes { get; set; } } }