2016-06-07 169 views
0

我有這兩個類,我想添加一對多的關係。一對多的關係 - 代碼優先

一個怪物只有一個位置

位置可以有很多怪物

但是,當我嘗試Update-Database

ALTER TABLE語句衝突與外鍵我得到這個錯誤約束「FK_dbo.Monsters_dbo.Locations_LocationId」。衝突發生在數據庫「空閒」,表「dbo.Locations」,列'LocationId'中。

怪物

public class Monster 
{ 
    public Monster() 
    { 

    } 

    public int MonsterId { get; set; } 
    public string Name { get; set; } 
    public int Gold { get; set; } 
    public int Experience { get; set; } 
    public int Level { get; set; } 

    public int LocationId { get; set; } 
    [ForeignKey("LocationId")] 
    public virtual Location Location { get; set; } 
} 

位置

public class Location 
{ 
    public Location() 
    { 
     Monsters = new List<Monster>(); 
    } 

    public int LocationId { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<Monster> Monsters { get; set; } 
} 

回答

0

嘗試清除Location表中的現有數據......或者讓您的FK在您的Monsters表中爲空。

0

在你的環境下,你可以使用:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Location>() 
      .HasMany(l => l.Monsters) 
} 
相關問題