我使用Identity Individual User
创建了新的ASP.NET Core项目,但它没有创建任何数据库。
我必须手动使用add-migration
update-database
。
我记得,过去,一切都是自动完成的。不知道这次出了什么问题。
VS2017.3
答案 0 :(得分:1)
您必须触发它才能自动迁移数据库。与以前版本的ASP.NET MVC不同,this isn't implemented out of the box。
然而,可以实现这一目标的方法是从您的startup.cs
或其他早期的其他地方触发它,如下所示:
using (var context = new MyDbContext(..))
{
context.Database.Migrate();
}
答案 1 :(得分:1)
如果您只想创建数据库模式,可以调用:
<?php
$name = @trim(stripslashes($_POST['name']));
$from = @trim(stripslashes($_POST['email']));
$subject = @trim(stripslashes($_POST['subject']));
$message = @trim(stripslashes($_POST['message']));
$to = '<myemail@domain.com>';//replace with your email
$echo =("Thank you for contacting us!");
$headers = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();
mail($to, $subject, $message, $headers);
die;
//IDbContext context; context.Database.EnsureCreated();
完全绕过迁移,只是为您创建架构,您不能将其与迁移混合在一起。EnsureCreated
用于测试或快速原型设计,您可以在每次删除和重新创建数据库时使用。如果您正在使用迁移并希望在应用启动时自动应用迁移,则可以使用EnsureCreated
代替。
答案 2 :(得分:0)
要启用自动迁移,您需要将其添加到配置中:
public class MigrateDBConfiguration : System.Data.Entity.Migrations.DbMigrationsConfiguration<DbContext>
{
public MigrateDBConfiguration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
}
要启用对数据库的自动更新,您需要在上下文的OnModelCreating()方法中添加Database.SetInitializer(...):
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");
}
}
}
答案 3 :(得分:0)
根据您拥有的dotnet核心版本,ASP.NET核心可能无法在您创建新应用时自动为您创建数据库。
但是,只需迁移和更新数据库即可。
首先,使用语法dotnet ef migrations add <MIGRATION_NAME>
创建新的迁移。像这样
dotnet ef migrations add InitialMigration
然后像这样更新数据库
dotnet ef database update
。
这应该可以解决问题。