[英]Add a new record to existing table in the database on a new entity creation using Entity Framework
[英]Entity Framework doesn't add new table to database
通常我首先使用數據庫創建項目,現在我嘗試(由於 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
}
所以我已經在我的數據庫的訂單表中有數據,在 asp.net 用戶表中有用戶,我不能允許刪除數據庫,所以我想,自動遷移:
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
不會改變任何東西
您需要為更改添加遷移,然后執行Update-Database
。 Migrations 文件夾只有 2 個文件,並且沒有一個是遷移文件 (TimeStamp_MigrationName.cs),這告訴您沒有要執行的遷移。 您需要類似的東西(啟用遷移后):
PM > Add-Migration -Name NewEntityAdded
整個語法是:
添加遷移 [-Name] [-Force] [-ProjectName ] [-StartUpProjectName ] [-ConfigurationTypeName ] [-ConnectionStringName ] [-IgnoreChanges] [-AppDomainBaseDirectory ] []
之后 - 執行Update-Database
。
更多信息 -這里
更新后編輯
遷移文件為空這一事實意味着在執行add-migration
時,當前快照與您嘗試遷移到的快照之間沒有區別。 您不必修改遷移文件。 所有的變化都必須存在。 根據文件,沒有什么可以改變的。 這就是為什么“更新數據庫”沒有改變任何東西
你還在保留這個嗎:
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.創建模型類后運行DbContext.tt文件
2. 在 Package Manager Console 中,選擇您的遷移項目(如果您已創建)作為默認項目
3. 運行 add-migration -startupProject "your startup projectname" [Migration_Name]
4.運行DbContext.Views.tt文件
5. update-database -startupProject "你的啟動項目名" -Verbose
我意識到我有同樣的問題,我運行 add-migration rewreww,遷移腳本不生成表,然后我意識到你需要刪除快照中的任何內容,然后重新運行它解決了我的問題。 感謝 m3n7alsnak3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.