1

我已经查看了很多问题并尝试了所有可用的解决方案,但它似乎不适用于我的特定场景。我正在尝试为以下类添加代码优先的多对多关系并收到以下错误:

在表“AgentPoolAgents”上引入 FOREIGN KEY 约束“FK_dbo.AgentPoolAgents_dbo.Agents_Agent_Id”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。无法创建约束。请参阅以前的错误。

代理人

    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()
    {
    }
}

代理池

    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 包管理器控制台命令运行迁移时会出现该错误。

任何帮助深表感谢!

4

1 回答 1

1

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

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

于 2013-05-31T11:45:35.437 回答