MySqlContext.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. using MySql.Data.EntityFramework;
  2. using MySql.Data.MySqlClient;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Configuration;
  6. using System.Data.Common;
  7. using System.Data.Entity;
  8. using System.Data.Entity.ModelConfiguration.Conventions;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using XdCxRhDW.Entity;
  13. using XdCxRhDW.Framework;
  14. namespace XdCxRhDW.Repostory
  15. {
  16. [DbConfigurationType(typeof(MySqlConfiguration))]
  17. public class MySqlContext: DbContext
  18. {
  19. public MySqlContext()
  20. : base(AppConfigHelper.GetConnectionString("MySql"))
  21. {
  22. //base的构造函数如果使用name则ConnectionString配置中必须包含providerName="MySql.Data.MySqlClient"、
  23. //为了方便用户配置连接这里直接使用连接字符串而不是连接字符串的name
  24. }
  25. public MySqlContext(string connectionString)
  26. :base(connectionString)
  27. {
  28. }
  29. public Task<List<T>> SqlQueryAsync<T>(string sql)
  30. {
  31. return this.Database.SqlQuery<T>(sql).ToListAsync();
  32. }
  33. public Task<int> ExecuteSqlCommandAsync(string sql)
  34. {
  35. return this.Database.ExecuteSqlCommandAsync(sql);
  36. }
  37. public Task<T> SqlQueryOneAsync<T>(string sql)
  38. {
  39. return this.Database.SqlQuery<T>(sql).FirstOrDefaultAsync();
  40. }
  41. protected override void OnModelCreating(DbModelBuilder modelBuilder)
  42. {
  43. //this.Database.Log = msg =>
  44. //{
  45. //};
  46. modelBuilder.Properties<DateTime>()
  47. .Configure(c => c.HasPrecision(3)); // 3 表示毫秒精度
  48. modelBuilder.Entity<XlInfo>()
  49. .HasIndex(p => new { p.SatCode, p.TimeUTC })
  50. .HasName("IX_XlInfo_SatCode_TimeUTC");
  51. modelBuilder.Entity<XlInfo>()
  52. .HasIndex(p => p.SatCode)
  53. .HasName("IX_XlInfo_SatCode");
  54. modelBuilder.Entity<XlInfo>()
  55. .HasIndex(p => p.TimeUTC)
  56. .HasName("IX_XlInfo_TimeUTC");
  57. modelBuilder.Entity<TaskInfo>()
  58. .HasIndex(p => p.UpdateTime)
  59. .HasName("IX_TaskInfo_UpdateTime");
  60. modelBuilder.Entity<LogRes>()
  61. .HasIndex(p => p.Module)
  62. .HasName("IX_LogRes_Module");
  63. modelBuilder.Entity<LogRes>()
  64. .HasIndex(p => p.LogTime)
  65. .HasName("IX_LogRes_LogTime");
  66. modelBuilder.Entity<LogRes>()
  67. .HasIndex(p => p.LogType)
  68. .HasName("IX_LogRes_LogType");
  69. modelBuilder.Entity<LogRes>()
  70. .HasIndex(p => p.Deleted)
  71. .HasName("IX_LogRes_Deleted");
  72. modelBuilder.Entity<StationRes>()
  73. .HasIndex(p => p.Deleted)
  74. .HasName("IX_StationRes_Deleted");
  75. modelBuilder.Entity<CxRes>()
  76. .HasIndex(p => p.Deleted)
  77. .HasName("IX_CxRes_Deleted");
  78. modelBuilder.Entity<CgRes>()
  79. .HasIndex(p => p.Deleted)
  80. .HasName("IX_CgRes_Deleted");
  81. modelBuilder.Entity<PosRes>()
  82. .HasIndex(p => p.Deleted)
  83. .HasName("IX_PosRes_Deleted");
  84. modelBuilder.Entity<CgXgfRes>()
  85. .HasIndex(p => p.Deleted)
  86. .HasName("IX_CgXgfRes_Deleted");
  87. modelBuilder.Entity<CheckRes>()
  88. .HasIndex(p => p.Deleted)
  89. .HasName("IX_CheckRes_Deleted");
  90. base.OnModelCreating(modelBuilder);
  91. }
  92. public DbSet<XlInfo> XlInfos { set; get; }
  93. public DbSet<TaskInfo> TaskInfos { set; get; }
  94. public DbSet<TaskSig> TaskSigs { set; get; }
  95. public DbSet<TxInfo> TxInfos { get; set; }
  96. public DbSet<SatInfo> SatInfos { get; set; }
  97. public DbSet<FixedStation> FixedStation { get; set; }
  98. public DbSet<SigInfo> SigInfos { get; set; }
  99. public DbSet<SigDelay> SigDelays { get; set; }
  100. public DbSet<TargetInfo> TargetInfos { get; set; }
  101. public DbSet<SysSetings> SysSetings { get; set; }
  102. public DbSet<TaskRunnningInfo> TaskRunnningInfos { get; set; }
  103. //以下为Range分区表
  104. public DbSet<LogRes> LogRes { set; get; }
  105. public DbSet<StationRes> StationRes { get; set; }
  106. public DbSet<CxRes> CxRes { get; set; }
  107. public DbSet<CgRes> CgRes { get; set; }
  108. public DbSet<CgXgfRes> CgXgfRes { get; set; }
  109. public DbSet<PosRes> PosRes { get; set; }
  110. public DbSet<CheckRes> CheckRes { get; set; }
  111. }
  112. }