/// <summary> /// /// </summary> /// <param name="resourcePath"></param> /// <param name="dbc">データベース</param> private void UpgradeDatabase(string resourcePath, AtDbContext dbc) { string sqltext = ""; System.Reflection.Assembly assm = System.Reflection.Assembly.GetExecutingAssembly(); using (var stream = assm.GetManifestResourceStream(resourcePath)) { using (StreamReader reader = new StreamReader(stream)) { sqltext = reader.ReadToEnd(); } } dbc.Database.ExecuteSqlCommand(sqltext); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IServiceProvider serviceProvider) { app.UseDeveloperExceptionPage(); app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseSession(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); AtDbContext.CreateAdminUser(app.ApplicationServices).Wait(); }
/// <summary> /// 現在のバージョンからマイグレーションするファイルがリソースファイルにあるか探します。 /// リソースファイルがある場合はそのファイルに含まれるSQLを実行し、ファイル名からマイグレーション後のバージョンを取得します。 /// </summary> /// <param name="version">現在のバージョン。アップグレード元のバージョン。</param> /// <returns>次のバージョン番号。マイグレーションを実施しなかった場合は、versionの値がそのまま帰ります。</returns> private string UpgradeFromResource(string dbselect, string version, AtDbContext @dbc) { System.Reflection.Assembly assm = System.Reflection.Assembly.GetExecutingAssembly(); string currentVersion = version; var mss = assm.GetManifestResourceNames(); // この方法で読み込みができるリソースファイルの種類は「埋め込みリソース」を設定したもののみです。 var r = new Regex(string.Format("Nadesico.Assets.Sql.{0}.{1}", dbselect, "upgrade - " + currentVersion + "-(.+)\\.txt")); foreach (var rf in assm.GetManifestResourceNames()) { var matcher = r.Match(rf); if (matcher.Success && matcher.Groups.Count > 1) { UpgradeDatabase(rf, @dbc); currentVersion = matcher.Groups[1].Value; // 正規表現にマッチした箇所が、マイグレート後のバージョンになります。 } } return(currentVersion); }
/// <summary> /// 現在のバージョンからマイグレーションするファイルがリソースファイルにあるか探します。 /// リソースファイルがある場合はそのファイルに含まれるSQLを実行し、ファイル名からマイグレーション後のバージョンを取得します。 /// </summary> /// <param name="version">現在のバージョン。アップグレード元のバージョン。</param> /// <returns>次のバージョン番号。マイグレーションを実施しなかった場合は、versionの値がそのまま帰ります。</returns> private string UpgradeFromResource(string version, AtDbContext @dbc) { System.Reflection.Assembly assm = System.Reflection.Assembly.GetExecutingAssembly(); string currentVersion = version; var mss = assm.GetManifestResourceNames(); // 「Yukikaze.Assets.Sql.upgrade-1.0.0-1.1.0.txt」というリソースファイルを探す。 // この方法で読み込みができるリソースファイルは、「埋め込みリソース」です。 var r = new Regex("Mogami.Assets.Sql.upgrade-" + currentVersion + "-(.+)\\.txt"); foreach (var rf in assm.GetManifestResourceNames()) { var matcher = r.Match(rf); if (matcher.Success && matcher.Groups.Count > 1) { UpgradeDatabase(rf, @dbc); currentVersion = matcher.Groups[1].Value; // 正規表現にマッチした箇所が、マイグレート後のバージョンになります。 } } return(currentVersion); }
public AdminController(AtDbContext context, IWebHostEnvironment hostEnvironment) { this._hostEnvironment = hostEnvironment; _context = context; }