【发布时间】:2013-05-15 20:03:23
【问题描述】:
我查看了很多问题并尝试了所有可用的解决方案,但它似乎不适用于我的具体情况。我正在尝试为以下类添加代码优先的多对多关系并收到以下错误:
引入 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()
{
}
}
代理池
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 包管理器控制台命令运行迁移时出现错误。
非常感谢任何帮助!
【问题讨论】:
-
我刚刚粘贴了您的代码并进行了迁移。一切正常,您的模型上可能有更多实体与代理交互,这就是创建循环引用的原因
标签: asp.net-mvc entity-framework ef-code-first many-to-many