Пример #1
0
        /// <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);
        }
Пример #2
0
        // 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();
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
 public AdminController(AtDbContext context, IWebHostEnvironment hostEnvironment)
 {
     this._hostEnvironment = hostEnvironment;
     _context = context;
 }