簡體   English   中英

實體框架不向數據庫添加新表

[英]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.csConfigurations.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM