通常我首先使用数据库创建项目,现在我尝试(由于ASP.NET登录框架)代码第一种方法。到目前为止一切顺利,一切正常。现在我需要为项目添加一个新模型,这样做并在DbContext
中添加了模型:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public System.Data.Entity.DbSet<Order> Orders { get; set; } // existing one
public System.Data.Entity.DbSet<Document> Documents { get; set; } // new one
}
所以我已经在我的数据库中的orders表和asp.net用户表中的用户中有数据,我不能允许删除db,所以我想,自动迁移:
Package Manager > Enable-Migrations -EnableAutomaticMigrations
然后
PM > update-database (-f)
然而,这会返回:
No pending explicit migrations.
表格不会被创建。但是,创建了一个名为 Migrations 的新文件夹,其中包含2个文件:###########_dbname.cs
和Configurations.cs
任何提示为什么我的表不会被创建?我甚至在迁移文件中试过这个
public partial class project: DbMigration
{
public override void Up()
{
CreateTable("dbo.Documents", c => new
{
DocumentId = c.Int(nullable: false, identity: true),
Label = c.Int(nullable: false),
Data = c.Binary(),
OrderId = c.Int(nullable: false)
}).PrimaryKey(t => t.DocumentId)
.ForeignKey("dbo.Orders", t => t.OrderId, cascadeDelete: true);
徒劳
更新
如果我执行add-migration
,则会创建以下文件,如何修改它?
using System;
using System.Data.Entity.Migrations;
public partial class documents : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
简单地执行update-database
不会改变任何内容
答案 0 :(得分:2)
您需要为更改添加迁移,然后执行Update-Database
。 Migrations文件夹只有2个文件,而且它们都不是迁移文件(TimeStamp_MigrationName.cs)这一事实告诉您没有要执行的迁移。您需要(启用迁移后):
PM > Add-Migration -Name NewEntityAdded
整个语法是:
添加迁移[-Name] [-Force] [-ProjectName] [-StartUpProjectName] [-ConfigurationTypeName] [-ConnectionStringName] [-IgnoreChanges] [-AppDomainBaseDirectory] []
然后 - 执行Update-Database
。
更多信息 - Here
更新后编辑
迁移文件为空的事实意味着在执行add-migration
时,当前快照与您尝试迁移到的快照之间没有区别。您不必修改迁移文件。所有的变化必须在那里。根据该文件,没有什么可以改变的。这就是为什么更新数据库&#39;没有改变什么
你还在保留这个:
public partial class project: DbMigration
{
public override void Up()
{
CreateTable("dbo.Documents", c => new
{
DocumentId = c.Int(nullable: false, identity: true),
Label = c.Int(nullable: false),
Data = c.Binary(),
OrderId = c.Int(nullable: false)
}).PrimaryKey(t => t.DocumentId)
.ForeignKey("dbo.Orders", t => t.OrderId, cascadeDelete: true);
你的代码中的?如果是 - 删除它
答案 1 :(得分:0)
请尝试以下步骤:
1.创建模型类后运行DbContext.tt文件
2.在程序包管理器控制台中,选择您的迁移项目(如果已创建一个)作为默认项目
3.运行add-migration -startupProject&#34;您的启动项目名称&#34; [Migration_Name]
4.运行DbContext.Views.tt文件
5. update-database -startupProject&#34;你的启动项目名称&#34; -verbose
答案 2 :(得分:0)
我意识到我遇到了同样的问题,我运行了 add-migration rewreww,迁移脚本没有生成表,然后我意识到您需要删除快照中的任何内容,然后重新运行它解决了我的问题。感谢 m3n7alsnak3