2017-07-24 91 views
0

我正在使用實體框架處理ASP.NET MVC應用程序。使遷移和添加這樣的遷移後:通過移植更新實體框架數據庫

public override void Up() 
{ 
     DropForeignKey("dbo.PersonModel", "TeamModel_TeamId", "dbo.TeamModel"); 
     DropIndex("dbo.PersonModel", new[] { "TeamModel_TeamId" }); 
     RenameColumn(table: "dbo.PersonModel", name: "TeamModel_TeamId", newName: "TeamModelRefId"); 
     DropPrimaryKey("dbo.PersonModel"); 
     AddColumn("dbo.PersonModel", "IdPerson", c => c.Int(nullable: false, identity: true)); 
     AlterColumn("dbo.PersonModel", "TeamModelRefId", c => c.Int(nullable: false)); 
     AddPrimaryKey("dbo.PersonModel", "IdPerson"); 
     CreateIndex("dbo.PersonModel", "TeamModelRefId"); 
     AddForeignKey("dbo.PersonModel", "TeamModelRefId", "dbo.TeamModel", "TeamId", cascadeDelete: true); 
     DropColumn("dbo.PersonModel", "PersonId"); 
} 

public override void Down() 
{ 
     AddColumn("dbo.PersonModel", "PersonId", c => c.Int(nullable: false, identity: true)); 
     DropForeignKey("dbo.PersonModel", "TeamModelRefId", "dbo.TeamModel"); 
     DropIndex("dbo.PersonModel", new[] { "TeamModelRefId" }); 
     DropPrimaryKey("dbo.PersonModel"); 
     AlterColumn("dbo.PersonModel", "TeamModelRefId", c => c.Int()); 
     DropColumn("dbo.PersonModel", "IdPerson"); 
     AddPrimaryKey("dbo.PersonModel", "PersonId"); 
     RenameColumn(table: "dbo.PersonModel", name: "TeamModelRefId", newName: "TeamModel_TeamId"); 
     CreateIndex("dbo.PersonModel", "TeamModel_TeamId"); 
     AddForeignKey("dbo.PersonModel", "TeamModel_TeamId", "dbo.TeamModel", "TeamId"); 
} 

我得到這樣的錯誤:

錯誤編號:2744,狀態:2,等級:爲表指定的16個
多重身份列'PersonModel'。每個表只允許有一個標識列。

這是我的模型:

public class PersonModel 
{ 
    [Key] 
    public int IdPerson { get; set; } 
    public string NickName { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Email { get; set; } 

    public int TeamModelRefId { get; set; } 

    [ForeignKey("TeamModelRefId")]  
    public virtual TeamModel TeamModel { get; set; } 
} 

public class TeamModel 
{ 
    public TeamModel() 
    { 
     TeamMembers = new List<PersonModel>(); 
     this.Tournaments = new HashSet<TournamentModel>(); 
    } 

    [Key] 
    public int TeamId { get; set; } 

    public string TeamName { get; set; } 

    public virtual ICollection<PersonModel> TeamMembers { get; set; } 

    public ICollection<TournamentModel> Tournaments { get; set; } 

    public virtual MatchUpEntryModel MatchupEntry { get; set; } 

    public virtual MatchUpModel Matchup { get; set; } 
} 

回答

1

看起來你已經改變了你的主鍵列從PersonIdIdPerson。錯誤正在拋出,因爲後者是在前者被刪除之前添加的。重新排列您的Up()方法,如下所示:

public override void Up() 
    { 
     DropForeignKey("dbo.PersonModel", "TeamModel_TeamId", "dbo.TeamModel"); 
     DropIndex("dbo.PersonModel", new[] { "TeamModel_TeamId" }); 
     RenameColumn(table: "dbo.PersonModel", name: "TeamModel_TeamId", newName: "TeamModelRefId"); 
     DropPrimaryKey("dbo.PersonModel"); 
     AddPrimaryKey("dbo.PersonModel", "IdPerson"); 
     CreateIndex("dbo.PersonModel", "TeamModelRefId"); 
     AddForeignKey("dbo.PersonModel", "TeamModelRefId", "dbo.TeamModel", "TeamId", cascadeDelete: true); 
     DropColumn("dbo.PersonModel", "PersonId"); 
     AddColumn("dbo.PersonModel", "IdPerson", c => c.Int(nullable: false, identity: true)); 
     AlterColumn("dbo.PersonModel", "TeamModelRefId", c => c.Int(nullable: false)); 
    } 
相關問題