一对多关系 - 代码优先

时间:2016-06-07 11:17:15

标签: c# asp.net-mvc entity-framework model-view-controller

我有两个课程,我想添加一对多的关系。

怪物只有一个位置

一个位置可以有很多怪物

但是当我尝试Update-Database

时,我收到此错误
  

ALTER TABLE语句与FOREIGN KEY约束“FK_dbo.Monsters_dbo.Locations_LocationId”冲突。冲突发生在数据库“Idle”,表“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; }
}

2 个答案:

答案 0 :(得分:0)

在您的上下文中,您可以使用:

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

答案 1 :(得分:0)

尝试清除位置表中的现有数据...或者在您的Monsters表中使您的FK可以为空。