代码优先多次错误(可能导致循环或多个级联路径)

时间:2013-05-15 20:03:24

标签: asp.net-mvc entity-framework ef-code-first many-to-many

我已经查看了很多问题,并尝试了所有可用的解决方案,但似乎无法使用我的具体方案。我正在尝试为以下类添加代码优先的多对多关系,并收到以下错误:

  

引入FOREIGN KEY约束   桌上的'FK_dbo.AgentPoolAgents_dbo.Agents_Agent_Id'   'AgentPoolAgents'可能会导致循环或多个级联路径。指定   ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN   关键约束。无法创建约束。查看以前的错误。

代理

    public class Agent
{
    public virtual int Id { get; set; }
    public virtual string AgentName { get; set; }
    public virtual int UserId { get; set; }
    public virtual bool Available { get; set; }
    public virtual DateTime CreatedTime { get; set; }     
    public virtual ICollection<AgentPool> AgentPools { get; set; }

    public Agent()
    {
    }
}

AgentPool

    public class AgentPool
{
    public virtual int Id { get; set; }
    [Required]
    [Display(Name = "Agent pool name")]
    [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 3)]
    public virtual string PoolName { get; set; }
    public virtual int UserId { get; set; }
    public virtual DateTime CreatedTime { get; set; }
    public virtual DateTime ModifiedTime { get; set; }
    public virtual ICollection<Agent> Agents { get; set; }

    public AgentPool()
    {
    }
}

UserId是UserProfile类的外键,用于标识代理和代理池的所有者。 使用update-database package manager console命令运行迁移时出现错误。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您不需要每个字段都是虚拟的。通过这样做不确定你想要实现的目标。使用'virtual'关键字来加载导航属性,例如保持ICollection Agents虚拟化。

在回答您的问题时,请查看:this question