[解決済み] Entity Framework Coreでデータベースを自動作成する
質問
.NET core に移植される私のアプリケーションは、SQLite を備えた新しい EF Core を使用します。私は、アプリが最初に実行されたときに、データベースとテーブル構造を自動的に作成したいと思います。EFコアのドキュメントによると、これは手動コマンドを使用して行われます。
dotnet ef migrations add MyFirstMigration
dotnet ef database update
しかし、私はエンドユーザーがこれらのコマンドを入力することを望んでおらず、アプリが最初の使用時にデータベースを作成し設定することを希望しています。EF 6 には、次のような機能があります。
Database.SetInitializer(new CreateDatabaseIfNotExists<MyContext>());
しかし、EFコアでは、これらは存在しないように見えます。私は、EFコアに相当する何かについての例またはドキュメントを見つけることができませんし、それはEFコアのドキュメントで不足している機能のリストで言及されていません。私はすでにモデルクラスをセットアップしているので、モデルに基づいてデータベースを初期化するコードを書くことができますが、フレームワークがこれを自動的に行った場合、それははるかに簡単でしょう。私はモデルを自動で構築したり、マイグレートしたりしたくありません。
私はここで何かを見逃していますか、それともEFコアにテーブルの自動作成機能がないのでしょうか?
どのように解決するのですか?
マイグレーションを作成したのであれば、それを実行するために スタートアップ.cs を以下のようにします。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
context.Database.Migrate();
}
...
これは、追加したマイグレーションを使用してデータベースとテーブルを作成します。
もしEntity Framework Migrationsを使わず、代わりにDbContextモデルを最初の実行時にコンテキストクラスで正確に作成する必要があるなら、使用することができます。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
context.Database.EnsureCreated();
}
...
代わりに
データベースが作成されたことを確認する前に、データベースを削除する必要がある場合は、電話をかけます。
context.Database.EnsureDeleted();
呼び出す直前
EnsureCreated()
から引用した。 http://docs.identityserver.io/en/latest/quickstarts/7_entity_framework.html?highlight=entity
関連
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】なぜこのコードはInvalidOperationExceptionを投げるのですか?
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] Entity Framework 5 レコードを更新する
-
[解決済み] Entity Frameworkにおける最速の挿入方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「未割り当てのローカル変数を使用」とはどういう意味ですか?
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】ASP.NET Core Dependency Injectionのエラーです。アクティブ化しようとしているときに、タイプのサービスを解決できません。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】Unity 「関連するスクリプトを読み込むことができません」「Win32Exception: システムは指定されたファイルを見つけることができません"
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】画像のペイントにTextureBrushを使用する方法