パート 2: ASP.NET Core で Razor ページ アプリにモデルを追加する

作成者: Rick Anderson

このセクションでは、データベースで映画を管理するクラスが追加されます。 アプリのモデル クラスでは、Entity Framework Core (EF Core) を使用して、データベースを操作します。 EF Core は、データ アクセスを簡略化するオブジェクト リレーショナル マッパー (O/RM) です。 モデル クラスを記述すると、EF Core によってデータベースが作成されます。

モデル クラスは EF Core に対する依存関係がないため、P lain-O ld C LR O bjects (単純な従来の CLR) の頭文字を取って POCO クラスと呼ばれます。 これらは、データベースに格納されるデータのプロパティを定義します。

サンプル コードを表示またはダウンロードします (ダウンロード方法)。

データ モデルの追加

  1. ソリューション エクスプローラー で、 RazorPagesMovie プロジェクトを右クリックし、 [追加] > [新しいフォルダー] を選択します。 フォルダーに「Models」という名前を付けます。

  2. Models フォルダーを右クリックします。 [追加] > [クラス] の順に選択します。 クラスに Movie と名前を付けます。

  3. Movie クラスに次のプロパティを追加します。

    using System;
    using System.ComponentModel.DataAnnotations;
    
    namespace RazorPagesMovie.Models
    {
        public class Movie
        {
            public int ID { get; set; }
            public string Title { get; set; }
    
            [DataType(DataType.Date)]
            public DateTime ReleaseDate { get; set; }
            public string Genre { get; set; }
            public decimal Price { get; set; }
        }
    }
    

Movie クラスには次が含まれます。

  • ID フィールドは、データベースで主キー用に必要です。

  • [DataType(DataType.Date)]: [DataType] 属性では、データの種類 (Date) を指定します。 この属性を使用する場合:

    • ユーザーは日付フィールドに時刻の情報を入力する必要はありません。
    • 日付のみが表示され、時刻の情報は表示されません。

DataAnnotations は、後のチュートリアルで説明されます。

プロジェクトをビルドして、コンパイル エラーがないことを確認します。

ムービー モデルのスキャフォールディング

このセクションでは、ムービー モデルがスキャフォールディングされます。 つまり、スキャフォールディング ツールにより、ムービー モデルの作成、読み取り、更新、削除の (CRUD) 操作用のページが生成されます。

  1. Pages/Movies フォルダーを作成します。

    1. Pages フォルダーを右クリックし、 [追加] > [新しいフォルダー] を選択します。
    2. フォルダーに Movies という名前を付けます。
  2. Pages/Movies フォルダーを右クリックし、 [追加] > [スキャフォールディングされた新しい項目] を選択します。

    新規スキャフォールディング アイテム

  3. [スキャフォールディングを追加] ダイアログで、 [Entity Framework を使用する Razor ページ (CRUD)] > [追加] の順に選択します。

    スキャフォールディングを追加

  4. [Add Razor Pages using Entity Framework (CRUD)](Entity Framework を使用して Razor Pages (CRUD) を追加する) ダイアログを完了します。

    1. [モデル クラス] ドロップ ダウンで、 [Movie (RazorPagesMovie.Models)] を選択します。
    2. Data context class 行で、 + (+) 記号を選択します。
      1. [データ コンテキストの追加] ダイアログで、クラス名 RazorPagesMovie.Data.RazorPagesMovieContext が生成されます。
    3. [追加] を選びます。

    Razor ページの追加

appsettings.json ファイルは、ローカル データベースへの接続に使用される接続文字列を使用して更新されます。

作成および更新されたファイル

スキャフォールディングのプロセスでは、次のファイルが作成されます。

  • Pages/Movies: Create、Delete、Details、Edit、および Index。
  • Data/RazorPagesMovieContext.cs

更新されたファイル

  • Startup.cs

作成および更新されたファイルについては、次のセクションで説明します。

EF の移行機能を使用して初期データベース スキーマを作成する

Entity Framework Core の移行機能を使用すると、次のことができます。

  • 初期データベース スキーマを作成します。
  • データベース スキーマを増分方式で更新して、アプリケーションのデータ モデルとの同期を維持する。 データベース内の既存のデータは保持されます。

このセクションでは、パッケージ マネージャー コンソール (PMC) ウィンドウを使用して、次の作業を行います。

  • 初期移行を追加します。
  • 初期移行でデータベースを更新します。
  1. [ツール] メニューで、 [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール] の順に選択します。

    PMC メニュー

  2. PMC で、次のコマンドを入力します。

    Add-Migration InitialCreate
    Update-Database
    

SQL Server では、上記のコマンドで次の警告が生成されます。"エンティティ型 'Movie' の decimal 列 'Price' に型が指定されていません。 これにより、値が既定の有効桁数と小数点以下桁数に収まらない場合、自動的に切り捨てられます。 'HasColumnType()' を使用してすべての値に適合する SQL server 列の型を明示的に指定します。"

この警告は、後の手順で解決されるため、無視してください。

migrations コマンドによって最初のデータベース スキーマを作成するコードが生成されます。 このスキーマは、DbContext で指定されたモデルに基づきます。 InitialCreate 引数は移行の命名に使用されます。 任意の名前を使用できますが、規則により、移行を説明する名前が選択されます。

update コマンドにより、適用されていない移行で Up メソッドが実行されます。 この場合、update により、Migrations/<time-stamp>_InitialCreate.cs ファイルで Up メソッドが実行され、データベースが作成されます。

依存関係挿入に登録されるコンテキストを調べる

ASP.NET Core には、依存関係挿入が組み込まれています。 アプリケーションの起動時に、EF Core データベース コンテキストなどのサービスが依存関係の挿入に登録されます。 これらのサービスを必要とするコンポーネント (Razor Pages など) には、コンストラクターのパラメーターを介してこれらのサービスが指定されます。 データベース コンテキスト インスタンスを取得するコンストラクター コードは、この後のチュートリアルで示します。

スキャフォールディング ツールによってデータベース コンテキストが自動的に作成され、依存関係挿入コンテナーに登録されました。

Startup.ConfigureServices メソッドを調べます。 強調表示された行は、スキャフォールダーによって追加されました。

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();

    services.AddDbContext<RazorPagesMovieContext>(options =>
      options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}

RazorPagesMovieContext によって、Movie モデル用の EF Core 機能 (作成、読み取り、更新、削除など) が調整されます。 データ コンテキスト (RazorPagesMovieContext) は Microsoft.EntityFrameworkCore.DbContext から派生されます。 データ コンテキストによって、データ モデルに含めるエンティティが指定されます。

using Microsoft.EntityFrameworkCore;

namespace RazorPagesMovie.Data
{
    public class RazorPagesMovieContext : DbContext
    {
        public RazorPagesMovieContext (
            DbContextOptions<RazorPagesMovieContext> options)
            : base(options)
        {
        }

        public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
    }
}

上記のコードによって、エンティティ セットの DbSet<Movie> プロパティが作成されます。 Entity Framework の用語では、エンティティ セットは通常はデータベース テーブルに対応します。 エンティティはテーブル内の行に対応します。

DbContextOptions オブジェクトでメソッドが呼び出され、接続文字列の名前がコンテキストに渡されます。 ローカル開発の場合、構成システムによって appsettings.json ファイルから接続文字列が読み取られます。

アプリのテスト

  1. アプリを実行し、ブラウザーで URL に /Movies を追加します ( http://localhost:port/movies )。

    次のエラー メッセージが表示される場合:

    SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
    Login failed for user 'User-name'.
    

    移行手順を失敗しました。

  2. [作成] リンクをテストします。

    [作成] ページ

    注意

    Price フィールドに小数点のコンマを入力できない場合があります。 小数点にコンマ (",") を使う英語以外のロケール、および英語 (米国) 以外の日付形式で、jQuery 検証をサポートするには、アプリをグローバル化する必要があります。 グローバル化の手順については、この GitHub の記事をご覧ください。

  3. [編集][詳細] 、および [削除] の各リンクをテストします。

Entity Framework Core の SQL ログ

一般的に、ログの構成は appsettings.{Environment} .json ファイルの Logging セクションで指定されます。 SQL ステートメントをログに記録するには、 appsettings.json または appsettings.Development.json ファイルに "Microsoft.EntityFrameworkCore.Database.Command": "Information" を追加します。

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDB-2;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
     ,"Microsoft.EntityFrameworkCore.Database.Command": "Information"
    }
  },
  "AllowedHosts": "*"
}

上記の JSON では、SQL ステートメントがコマンド ラインと Visual Studio 出力ウィンドウに表示されます。

詳細については、ASP.NET Core のログの構成に関するページおよびこのGitHub issue を参照してください。

次のチュートリアルでは、スキャフォールディングによって作成されるファイルについて説明します。

その他の技術情報

このセクションでは、映画を管理するクラスが追加されます。 アプリのモデル クラスでは、Entity Framework Core (EF Core) を使用して、データベースを操作します。 EF Core は、データ アクセスを簡略化するオブジェクト リレーショナル マッパー (O/RM) です。

このモデル クラスは、EF Core に対する依存関係がないために、POCO クラス (plain-old CLR オブジェクト、つまり単純な従来の CLR) と呼ばれます。 これらは、データベースに格納されるデータのプロパティを定義します。

サンプル コードを表示またはダウンロードします (ダウンロード方法)。

データ モデルの追加

RazorPagesMovie プロジェクトを右クリックし、 [追加][新しいフォルダー] の順に選択します。 フォルダーに「Models」という名前を付けます。

Models フォルダーを右クリックします。 [追加] > [クラス] の順に選択します。 クラスに Movie と名前を付けます。

Movie クラスに次のプロパティを追加します。

using System;
using System.ComponentModel.DataAnnotations;

namespace RazorPagesMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }

        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }
}

Movie クラスには次が含まれます。

  • ID フィールドは、データベースで主キー用に必要です。

  • [DataType(DataType.Date)]: DataType 属性では、データの型 (Date) を指定します。 この属性を使用する場合:

    • ユーザーは日付フィールドに時刻の情報を入力する必要はありません。
    • 日付のみが表示され、時刻の情報は表示されません。

DataAnnotations は、後のチュートリアルで説明されます。

DataAnnotations は、後のチュートリアルで説明されます。

プロジェクトをビルドして、コンパイル エラーがないことを確認します。

ムービー モデルのスキャフォールディング

このセクションでは、ムービー モデルがスキャフォールディングされます。 つまり、スキャフォールディング ツールにより、ムービー モデルの作成、読み取り、更新、削除の (CRUD) 操作用のページが生成されます。

Pages/Movies フォルダーを作成します。

  • Pages フォルダーを右クリックし、 [追加] > [新しいフォルダー] を選択します。
  • フォルダーに Movies という名前を付けます。

Pages/Movies フォルダーを右クリックし、 [追加] > [スキャフォールディングされた新しい項目] を選択します。

VScode の新規スキャフォールディング アイテム

[スキャフォールディングを追加] ダイアログで、 [Entity Framework を使用する Razor ページ (CRUD)] > [追加] の順に選択します。

VScode でのスキャフォールディングの追加

[Add Razor Pages using Entity Framework (CRUD)](Entity Framework を使用して Razor Pages (CRUD) を追加する) ダイアログを完了します。

  • [モデル クラス] ドロップ ダウンで、 [Movie (RazorPagesMovie.Models)] を選択します。
  • データ コンテキスト クラス 行で、 + (プラス) 記号を選択し、生成された名前 RazorPagesMovie.Models.RazorPagesMovieContext を RazorPagesMovie.Data.RazorPagesMovieContext に変更します。 この変更は必須ではありません。 これにより、正しい名前空間を使用してデータベース コンテキスト クラスが作成されます。
  • [追加] を選びます。

VScode での Razor ページの追加

appsettings.json ファイルは、ローカル データベースへの接続に使用される接続文字列を使用して更新されます。

作成されたファイル

スキャフォールディングのプロセスが作成され、次のファイルが更新されます。

  • Pages/Movies: Create、Delete、Details、Edit、および Index。
  • Data/RazorPagesMovieContext.cs

更新済み

  • Startup.cs

作成および更新されたファイルについては、次のセクションで説明します。

最初の移行

このセクションでは、パッケージ マネージャー コンソール (PMC) を使用して、次の作業を行います。

  • 初期移行を追加します。
  • 初期移行でデータベースを更新します。

[ツール] メニューで、 [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール] の順に選択します。

PMC メニュー

PMC で、次のコマンドを入力します。

Add-Migration InitialCreate
Update-Database

上記のコマンドで次の警告が生成されます。"エンティティ型 'Movie' の decimal 列 'Price' に型が指定されていません。 これにより、値が既定の有効桁数と小数点以下桁数に収まらない場合、自動的に切り捨てられます。 'HasColumnType()' を使用してすべての値に適合する SQL server 列の型を明示的に指定します。"

この警告は、後の手順で解決されるため、無視してください。

移行コマンドによって、最初のデータベース スキーマを作成するコードが生成されます。 このスキーマは、DbContext で指定されたモデルに基づきます。 InitialCreate 引数は移行の命名に使用されます。 任意の名前を使用できますが、規則により、移行を説明する名前が選択されます。

update コマンドにより、適用されていない移行で Up メソッドが実行されます。 この場合、update により、Migrations/<time-stamp>_InitialCreate.cs ファイルで Up メソッドが実行され、データベースが作成されます。

依存関係挿入に登録されるコンテキストを調べる

ASP.NET Core には、依存関係挿入が組み込まれています。 アプリケーションの起動時に、EF Core データベース コンテキスト context などのサービスが依存関係の挿入に登録されます。 これらのサービスを必要とするコンポーネント (Razor Pages など) には、コンストラクターのパラメーターを介してこれらのサービスが指定されます。 この後のチュートリアルで、データベース コンテキスト context インスタンスを取得するコンストラクター コードを示します。

スキャフォールディング ツールによってデータベース コンテキスト context が自動的に作成され、依存関係挿入コンテナーに登録されました。

Startup.ConfigureServices メソッドを調べます。 強調表示された行は、スキャフォールダーによって追加されました。

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();

    services.AddDbContext<RazorPagesMovieContext>(options =>
      options.UseSqlServer(Configuration.GetConnectionString("RazorPagesMovieContext")));
}

RazorPagesMovieContext によって、Movie モデル用の EF Core 機能 (作成、読み取り、更新、削除など) が調整されます。 データ コンテキスト (RazorPagesMovieContext) は Microsoft.EntityFrameworkCore.DbContext から派生されます。 データ コンテキストによって、データ モデルに含めるエンティティが指定されます。

using Microsoft.EntityFrameworkCore;

namespace RazorPagesMovie.Data
{
    public class RazorPagesMovieContext : DbContext
    {
        public RazorPagesMovieContext (
            DbContextOptions<RazorPagesMovieContext> options)
            : base(options)
        {
        }

        public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
    }
}

上記のコードによって、エンティティ セットの DbSet<Movie> プロパティが作成されます。 Entity Framework の用語では、エンティティ セットは通常はデータベース テーブルに対応します。 エンティティはテーブル内の行に対応します。

DbContextOptions オブジェクトでメソッドが呼び出され、接続文字列の名前がコンテキストに渡されます。 ローカル開発の場合、構成システムによって appsettings.json ファイルから接続文字列が読み取られます。

アプリのテスト

  • アプリを実行し、ブラウザーで URL に /Movies を追加します ( http://localhost:port/movies )。

エラーが発生した場合は、次のようにします。

SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.

移行手順を失敗しました。

  • [作成] リンクをテストします。

    [作成] ページ

    注意

    Price フィールドに小数点のコンマを入力できない場合があります。 小数点にコンマ (",") を使う英語以外のロケール、および英語 (米国) 以外の日付形式で、jQuery 検証をサポートするには、アプリをグローバル化する必要があります。 グローバル化の手順については、この GitHub の記事をご覧ください。

  • [編集][詳細] 、および [削除] の各リンクをテストします。

次のチュートリアルでは、スキャフォールディングによって作成されるファイルについて説明します。

その他の技術情報

このセクションでは、クロスプラットフォーム SQLite データベースでムービーを管理するためのクラスを追加します。 ASP.NET Core テンプレートから作成されたアプリでは、SQLite データベースが使用されます。 このアプリのモデル クラスは、データベースを操作するために Entity Framework Core (EF Core) (SQLite EF Core データベース プロバイダー) で使用されます。 EF Core は、データ アクセスを簡略化するオブジェクト リレーショナル マッピング (ORM) フレームワークです。

このモデル クラスは、EF Core に対する依存関係がないために、POCO クラス (plain-old CLR オブジェクト、つまり単純な従来の CLR) と呼ばれます。 これらは、データベースに格納されるデータのプロパティを定義します。

サンプル コードを表示またはダウンロードします (ダウンロード方法)。

データ モデルの追加

RazorPagesMovie プロジェクトを右クリックし、 [追加][新しいフォルダー] の順に選択します。 フォルダーに「Models」という名前を付けます。

Models フォルダーを右クリックします。 [追加] > [クラス] の順に選択します。 クラスに Movie と名前を付けます。

Movie クラスに次のプロパティを追加します。

using System;
using System.ComponentModel.DataAnnotations;

namespace RazorPagesMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }

        [DataType(DataType.Date)]
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }
}

Movie クラスには次が含まれます。

  • ID フィールドは、データベースで主キー用に必要です。

  • [DataType(DataType.Date)]: DataType 属性では、データの型 (Date) を指定します。 この属性を使用する場合:

    • ユーザーは日付フィールドに時刻の情報を入力する必要はありません。
    • 日付のみが表示され、時刻の情報は表示されません。

DataAnnotations は、後のチュートリアルで説明されます。

プロジェクトをビルドして、コンパイル エラーがないことを確認します。

ムービー モデルのスキャフォールディング

このセクションでは、ムービー モデルがスキャフォールディングされます。 つまり、スキャフォールディング ツールにより、ムービー モデルの作成、読み取り、更新、削除の (CRUD) 操作用のページが生成されます。

Pages/Movies フォルダーを作成します。

  • Pages フォルダーを右クリックし、 [追加] > [新しいフォルダー] を選択します。
  • フォルダーに Movies という名前を付けます。

Pages/Movies フォルダーを右クリックし、 [追加] > [スキャフォールディングされた新しい項目] を選択します。

Visual Studio の新規スキャフォールディング アイテム

[スキャフォールディングを追加] ダイアログで、 [Entity Framework を使用する Razor ページ (CRUD)] > [追加] の順に選択します。

Visual Studio でのスキャフォールディング アイテムの追加

[Add Razor Pages using Entity Framework (CRUD)](Entity Framework を使用して Razor Pages (CRUD) を追加する) ダイアログを完了します。

  • [モデル クラス] ドロップ ダウンで、 [Movie (RazorPagesMovie.Models)] を選択します。
  • データ コンテキスト クラス 行で、 + (プラス) 記号を選択し、生成された名前 RazorPagesMovie.Models.RazorPagesMovieContext を受け入れます。
  • [追加] を選びます。

Visual Studio での Razor ページの追加

appsettings.json ファイルは、ローカル データベースへの接続に使用される接続文字列を使用して更新されます。

スキャフォールディングのプロセスが作成され、次のファイルが更新されます。

作成されたファイル

  • Pages/Movies: Create、Delete、Details、Edit、および Index。
  • Data/RazorPagesMovieContext.cs

更新されたファイル

  • Startup.cs

作成および更新されたファイルについては、次のセクションで説明します。

最初の移行

このセクションでは、パッケージ マネージャー コンソール (PMC) を使用して、次の作業を行います。

  • 初期移行を追加します。
  • 初期移行でデータベースを更新します。

[ツール] メニューで、 [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール] の順に選択します。

PMC メニュー

PMC で、次のコマンドを入力します。

Add-Migration Initial
Update-Database

Add-Migration コマンドによって最初のデータベース スキーマを作成するコードが生成されます。 スキーマは、 RazorPagesMovieContext.cs ファイルの DbContext に指定されたモデルに基づきます。 InitialCreate 引数は、移行の名前を指定するために使用されます。 任意の名前を使用できますが、規則により、移行を説明する名前が使用されます。 詳細については、「チュートリアル パート 5 - Contoso University のサンプルに移行を適用する」を参照してください。

Update-Database コマンドによって、Migrations/<time-stamp>_InitialCreate.cs ファイルの Up メソッドが実行されます。 Up メソッドにより、データベースが作成されます。

上記のコマンドで次の警告が生成されます。"エンティティ型 'Movie' の decimal 列 'Price' に型が指定されていません。 これにより、値が既定の有効桁数と小数点以下桁数に収まらない場合、自動的に切り捨てられます。 'HasColumnType()' を使用してすべての値に適合する SQL server 列の型を明示的に指定します。"

この警告は、後の手順で解決されるため、無視してください。

依存関係挿入に登録されるコンテキストを調べる

ASP.NET Core には、依存関係挿入が組み込まれています。 アプリケーションの起動時に、EF Core データベース コンテキスト context などのサービスが依存関係の挿入に登録されます。 これらのサービスを必要とするコンポーネント (Razor Pages など) には、コンストラクターのパラメーターを介してこれらのサービスが指定されます。 この後のチュートリアルで、データベース コンテキスト contextB コンテキスト インスタンスを取得するコンストラクター コードを示します。

スキャフォールディング ツールによってデータベース コンテキスト context が自動的に作成され、依存関係挿入コンテナーに登録されました。

Startup.ConfigureServices メソッドを調べます。 強調表示された行は、スキャフォールダーによって追加されました。

// This method gets called by the runtime. 
// Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is 
        // needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });

    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    services.AddDbContext<RazorPagesMovieContext>(options =>
      options.UseSqlServer(
          Configuration.GetConnectionString("RazorPagesMovieContext")));
}

RazorPagesMovieContext によって、Movie モデル用の EF Core 機能 (作成、読み取り、更新、削除など) が調整されます。 データ コンテキスト (RazorPagesMovieContext) は Microsoft.EntityFrameworkCore.DbContext から派生されます。 データ コンテキストによって、データ モデルに含めるエンティティが指定されます。

using Microsoft.EntityFrameworkCore;

namespace RazorPagesMovie.Models
{
    public class RazorPagesMovieContext : DbContext
    {
        public RazorPagesMovieContext (DbContextOptions<RazorPagesMovieContext> options)
            : base(options)
        {
        }

        public DbSet<RazorPagesMovie.Models.Movie> Movie { get; set; }
    }
}

上記のコードによって、エンティティ セットの DbSet<Movie> プロパティが作成されます。 Entity Framework の用語では、エンティティ セットは通常はデータベース テーブルに対応します。 エンティティはテーブル内の行に対応します。

DbContextOptions オブジェクトでメソッドが呼び出され、接続文字列の名前がコンテキストに渡されます。 ローカル開発の場合、構成システムによって appsettings.json ファイルから接続文字列が読み取られます。

アプリのテスト

  • アプリを実行し、ブラウザーで URL に /Movies を追加します ( http://localhost:port/movies )。

エラーが発生した場合は、次のようにします。

SqlException: Cannot open database "RazorPagesMovieContext-GUID" requested by the login. The login failed.
Login failed for user 'User-name'.

移行手順を失敗しました。

  • [作成] リンクをテストします。

    [作成] ページ

    注意

    Price フィールドに小数点のコンマを入力できない場合があります。 小数点にコンマ (",") を使う英語以外のロケール、および英語 (米国) 以外の日付形式で、jQuery 検証をサポートするには、アプリをグローバル化する必要があります。 グローバル化の手順については、この GitHub の記事をご覧ください。

  • [編集][詳細] 、および [削除] の各リンクをテストします。

次のチュートリアルでは、スキャフォールディングによって作成されるファイルについて説明します。

その他の技術情報