MSチュートリアル備忘録(Razor Pages WebApp)
MSチュートリアル備忘録(Razor Pages WebApp)
Razor Pagesについて、マイクロソフト公式のチュートリアルが公開されている。
チュートリアル: ASP.NET Core で Razor Pages Web アプリを作成する
このチュートリアルの成果物は、映画のデータベースを管理するアプリとなる。
この記事で言及すること
- チュートリアルをやってみて、大事だと思ったところを書き残す
- チュートリアルから飛び出して、データベースの接続先を変更する方法を書き残す
はじめにやっておくこと
チュートリアルでは言及されていないが、プロジェクトのディレクトリでdotnet watch run
をしておくとよい。
このコマンドを打つと、Chromeなどでlocalhost:5001
が開かれる。
ソースコードが変更されるたびに、勝手にビルドされてブラウザの内容(Webアプリの状態)が最新の状態に更新される
dotnet watch run
を打ったときのPowerShellの様子
アプリ成果物のイメージ
実在しない仮想の映画のリストが表示される。
上から4つまではシードデータであり、最後の1つは手入力したデータである。
チュートリアルの大事なところ
チュートリアルをやってみて、大事だと思ったところを書き残す。
モデルを追加する
RazorPagesMovie.Models
にMovie.cs
ファイルを追加する。
Rating
は後々追加したプロパティである。
モデルの変更をデータベースに反映させる方法については、チュートリアル内で言及されている。
public class Movie
{
public int ID { get; set; }
[StringLength(60, MinimumLength = 3)]
[Required]
public string Title { get; set; }
[Display(Name = "Release Date")]
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }
[Range(1, 100)]
[DataType(DataType.Currency)]
[Column(TypeName = "decimal(18, 2)")]
public decimal Price { get; set; }
[RegularExpression(@"^[A-Z]+[a-zA-Z\s]*$")]
[Required]
[StringLength(30)]
public string Genre { get; set; }
[RegularExpression(@"^[A-Z]+[a-zA-Z0-9""'\s-]*$")]
[StringLength(5)]
[Required]
public string Rating { get; set; }
}
モデルの各プロパティにつけた属性(例:[Required]
など)は、データベース側の制約にも反映される。
シードデータ
Initialize
メソッドをもつ。データベースが空っぽのときのみ、初期値となるデータをデータベースに書き込む。
例示や凡例の類と考えている。
データベースと正常に接続できているかの確認にもなる。
public static class SeedData
{
public static void Initialize(IServiceProvider serviceProvider)
{
using (var context = new RazorPagesMovieContext(
serviceProvider.GetRequiredService<
DbContextOptions<RazorPagesMovieContext>>()))
{
// Look for any movies.
if (context.Movie.Any())
{
return; // DB has been seeded
}
// すでにデータがある場合は、returnして以下実行しない。
マイグレーション
このチュートリアルでは合計3回のマイグレーションを行った。
機械的にNuGetパッケージマネージャーコンソールからコマンドを打っていたが、意味は分かっていない。
参考になりそうなサイト
この方法での移行の適用は、ローカルでの開発には適していますが、運用環境には適していません。詳細については、移行の適用に関するページを参照してください。
マイグレーションについて詳細
チュートリアルでは下記コマンドを打っていた。
1行目のコマンドでMigration
フォルダーになにやらファイルが生成されて、2行目のコマンドで実際にデータベースに対してなんらかの操作が加えられる、と理解している。
Add-Migration Hoge
Update-Database
運用環境ではこの方法は推奨されていないらしいけど、ここではそこには触れない。
カスタマイズ(SQL Server Expressに接続する)
ローカルマシンにインストールしてあるSQL Server 2019 Expressに接続してみる。
参考:新しい接続を追加する(マイクロソフト公式ページ)
まずは、先立ってにDBを作成しておく
SSMSで新しいDBを作った時の様子。RazorPagesMovieDB
をつくった。
つぎに、Visual Studioにデータベース接続を追加する
DBのプロパティに接続文字列があるので、appsetting.json
のConnectionStrings
を変更する
接続文字列を変更したら、Update-Database
を行う
dotnet watch run
しているPowerShellは、いったんCtrl + c
でキャンセルして
再度dotnet watch run
する。
結果確認
ブラウザをみてみると、マニュアルで追加したものがなくなっている。シードだけの表が表示される。
マニュアルでデータを加えてみる
SSMSで中身を確認してみる
appsetting.json
のConnectionStrings
を変更すれば、もちろん接続先のDB内容にあわせて表示が変わる。
SSMS側で新規データを追加したあとにブラウザをF5で更新すれば、新しい行が追加される
以上、おわり。
Author And Source
この問題について(MSチュートリアル備忘録(Razor Pages WebApp)), 我々は、より多くの情報をここで見つけました https://qiita.com/t13801206/items/3c1874cde4e9360f1e9f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .