我已经查看了很多问题,并尝试了所有可用的解决方案,但似乎无法使用我的具体方案。我正在尝试为以下类添加代码优先的多对多关系,并收到以下错误:
引入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命令运行迁移时出现错误。
非常感谢任何帮助!
答案 0 :(得分:1)
您不需要每个字段都是虚拟的。通过这样做不确定你想要实现的目标。使用'virtual'关键字来加载导航属性,例如保持ICollection Agents虚拟化。
在回答您的问题时,请查看:this question。