我创建了新的ASP.NET Core项目,其标识为Individual User
但它没有创建任何数据库。我需要手动使用add-migration
update-database
。ASP.NET核心新项目默认情况下不创建数据库
我记得,过去一切都是自动完成的。不知道这次有什么不对。
VS2017.3
我创建了新的ASP.NET Core项目,其标识为Individual User
但它没有创建任何数据库。我需要手动使用add-migration
update-database
。ASP.NET核心新项目默认情况下不创建数据库
我记得,过去一切都是自动完成的。不知道这次有什么不对。
VS2017.3
根据DOTNET核心的版本,你有,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()
代替。
[这打破了迁移](https://stackoverflow.com/questions/38238043/how-and-where-to-call-database-ensurecreated-and-database-migrate)。 – CodeCaster
要启用自动迁移,你需要把它添加到您的配置:
public class MigrateDBConfiguration : System.Data.Entity.Migrations.DbMigrationsConfiguration<DbContext>
{
public MigrateDBConfiguration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
}
要启用自动更新到你的数据库,你需要添加Database.SetInitializer(...)在OnModelCreating()方法在您的上下文中:
public class MyContext : DbContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyContext, MigrateDBConfiguration>());
}
...
}
您还可以使用Fluent migration自动进行数据库更新和迁移。
下面是关于如何从Here使用它的一个例子:
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 MVC,而不是ASP.NET Core?我不认为ASP.NET Core具有'AutomaticMigrationsEnabled' – Luke
分享您的代码以获得更好的帮助。@Wakka Sakka –
[EntityFramework Core自动迁移]的可能重复(https://stackoverflow.com/questions/39526595/entityframework-core-automatic-migrations) – CodeCaster
没有额外的代码。我只是创建新的aspnet核心1.1项目有一个迁移文件夹,但在服务器资源管理器是没有任何数据库。我必须'手动更新数据库' –