簡體   English   中英

添加遷移:部分結果

[英]Add-Migration: Partial results

我創建了兩個類:Máquina(機器)和TipoMáquina(機器類型),並且,我嘗試給該類Máquina一個來自TipoMáquina的外鍵(注意:如果是第一次遷移,沒有其他表格)。 :

namespace Plataforma.Models
{
    public class Máquina
    {
        [Key, Required]
        public int MáquinaId { get; set; }

        public int TipoMáquinaId { get; set; }
        public virtual TipoMáquina TipoMáquina { get; set; }
    }
}

namespace Plataforma.Models
{
    public class TipoMáquina
    {
        [Key, Required]
        public int TipoMáquinaId { get; set; }
        public string DescripciónTipoMáq { get; set; }
        public int PesoKg { get; set; }
        public int AltoMt { get; set; }
        public int LargoMt { get; set; }
        public int AnchoMt { get; set; }
        public virtual ICollection<Máquina> Máquinas { get; set; }
    }
}

它們也包含在DBContext中:

    public class Plataforma: DbContext
    {
        public DbSet<Máquina> Máquinas { get; set; }
        public DbSet<TipoMáquina> TipoMáquinas { get; set; }
    }

但是,數據庫中的結果只是第一個表。 沒有TipoMáquina的跡象或Máquina表中的前鍵,我也不知道為什么。

我懷疑與down()部分的遷移有關:

    public partial class PrimeraRelación : DbMigration
    {
        public override void Up()
        {
            CreateTable(
                "dbo.Máquina",
                c => new
                    {
                        MáquinaId = c.Int(nullable: false, identity: true),
                        TipoMáquinaId = c.Int(nullable: false),
                    })
                .PrimaryKey(t => t.MáquinaId)
                .ForeignKey("dbo.TipoMáquina", t => t.TipoMáquinaId, cascadeDelete: true)
                .Index(t => t.TipoMáquinaId);

            CreateTable(
                "dbo.TipoMáquina",
                c => new
                    {
                        TipoMáquinaId = c.Int(nullable: false, identity: true),

                    })
                .PrimaryKey(t => t.TipoMáquinaId);

        }

        public override void Down()
        {
            DropForeignKey("dbo.Máquina", "TipoMáquinaId", "dbo.TipoMáquina");
            DropIndex("dbo.Máquina", new[] { "TipoMáquinaId" });
            DropTable("dbo.TipoMáquina");
            DropTable("dbo.Máquina");
        }
    }
}

任何建議,不勝感激。

在TipoMachinas中嘗試以下修改:

private ICollection<Máquina> máquinas;


public virtual ICollection<Máquina> Máquinas 
    {
        get
        {
            return this.máquinas;
        }
        set
        {
            this.máquinas = value;
        }
    }

並在構造函數中:

public TipoMáquina()
    {
        this.máquinas = new HashSet<Máquina>(); 
    }

同樣,如果您將主鍵ID命名為唯一的Id而不是ModelId,那就更好了:)

最后,您可以將虛擬添加到dbcontext的dbset中

public class Plataforma: DbContext
{
    public virtual IDbSet<Máquina> Máquinas { get; set; }
    public virtual IDbSet<TipoMáquina> TipoMáquinas { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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