ID Individual User
の新しいASP.NETコアプロジェクトを作成しましたが、データベースを作成しませんでした。ASP.NETコアの新規プロジェクトがデフォルトでデータベースを作成しない
私はadd-migration
update-database
を手動で使用する必要があります。
過去にすべてが自動的に行われたことを覚えています。この時何が間違っているのだろう。
VS2017.3
ID Individual User
の新しいASP.NETコアプロジェクトを作成しましたが、データベースを作成しませんでした。ASP.NETコアの新規プロジェクトがデフォルトでデータベースを作成しない
私はadd-migration
update-database
を手動で使用する必要があります。
過去にすべてが自動的に行われたことを覚えています。この時何が間違っているのだろう。
VS2017.3
、ASP.NETコアは自動的にあなたのためのデータベースを作成することはできません。
ただし、データベースを移行して更新するだけで問題はありません。 最初に、dotnet ef migrations add <MIGRATION_NAME>
という構文で新しい移行を作成します。そう
dotnet ef migrations add InitialMigration
、その後、あなたがそう
dotnet ef database update
などのデータベースを更新するように。
これはトリックを行う必要があります。
データベースを自動的に移行するには、それを起動する必要があります。以前のバージョンのASP.NET MVCとは異なり、this isn't implemented out of the box。
これを達成することができる方法は、しかし、あなたのstartup.cs
からそれをトリガーする、またはどこか他の早期そうのようなパイプラインにすることです:
using (var context = new MyDbContext(..))
{
context.Database.Migrate();
}
あなただけのデータベーススキーマを作成したい場合は、呼び出すことができます:
全く//IDbContext context;
context.Database.EnsureCreated();
EnsureCreated
移行をバイパスしてスキーマを作成するだけで、これを移行と組み合わせることはできません。EnsureCreated
は、テストまたはラピッドプロトタイピング用に設計されており、毎回データベースを削除して再作成することができます。移行を使用していて、アプリの開始時に自動的に適用されるようにしたい場合は、代わりにcontext.Database.Migrate()
を使用できます。あなたはOnModelCreating()メソッドでDatabase.SetInitializer(...)を追加する必要があり、データベースへの自動更新を有効にするにはpublic class MigrateDBConfiguration : System.Data.Entity.Migrations.DbMigrationsConfiguration<DbContext> { public MigrateDBConfiguration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; } }
:
[マイグレーションを中断する](https://stackoverflow.com/questions/38238043/how-and-where-to-call-database-ensurecreated-and-database-migrate) – CodeCaster
ご使用の構成にこれを追加する必要が自動移行を有効にするにはあなたの文脈上:
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, MigrateDBConfiguration>());
}
...
}
また、データベースの更新や移行を自動化するためにFluent migrationを使用することができます。
ここHereからそれを使用する方法の例です:あなたは新しいアプリを作成するときに持っているDOTNETコアのバージョンによって
using FluentMigrator;
namespace DatabaseMigration.Migrations
{
[Migration(1)]
public class M0001_CreateMemberTable:Migration
{
public override void Up()
{
Create.Table("Member")
.WithColumn("MemberId").AsInt32().PrimaryKey().Identity()
.WithColumn("Name").AsString(50)
.WithColumn("Address").AsString()
.WithColumn("MobileNo").AsString(10);
}
public override void Down()
{
Delete.Table("Member");
}
}
}
この回答はASP.NET CoreではなくAsp.NET MVCに対するものだと思いますか?私はASP.NET Coreが 'AutomaticMigrationsEnabled'を持っているとは思わない – Luke
より良いヘルプのためにコードを共有してください。@Wakka Sakka –
[EntityFrameworkコアの自動移行]の可能な複製(https://stackoverflow.com/questions/39526595/entityframework-core-automatic-migrations) – CodeCaster
余分なコードはありません。私はちょうど新しいaspnetコア1.1プロジェクトを作成します。そこには移行フォルダがありますが、サーバエクスプローラにはdbがありません。私は 'update-database'を手動で行う必要があります –