【发布时间】:2014-02-18 20:49:35
【问题描述】:
我使用的是 EF6 代码优先。 我有两个课程:
public class Player
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
[Key]
public int Id { get; set; }
[Required, MinLength(2, ErrorMessage = "Player name must be at least 2 characters length")]
public string Name { get; set; }
[Required]
public int TeamClubId { get; set; }
[Required]
public int TeamNationalId { get; set; }
[Required, ForeignKey("TeamClubId")]
public virtual Team Club { get; set; }
[Required, ForeignKey("TeamNationalId")]
public virtual Team National { get; set; }
}
还有:
public class Team
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required, MinLength(2, ErrorMessage = "Team name must be at least 2 characters length")]
public string Name { get; set; }
[Required]
public TeamType Type { get; set; }
public virtual ICollection<Player> Players { get; set; }
}
这些是我与他们的两个班级的关系。 一名球员属于两支球队:俱乐部和国家队。 一支球队可以是俱乐部也可以是国家队,并拥有一批球员。
在我的上下文文件中我使用:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Player>()
.HasRequired<Team>(p => p.National)
.WithMany(t => t.Players)
.WillCascadeOnDelete(false);
base.OnModelCreating(modelBuilder);
}
运行迁移工具更新数据库时,出现以下错误:
在表“Players”上引入 FOREIGN KEY 约束“FK_dbo.Players_dbo.Teams_TeamNationalId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。 无法创建约束。查看以前的错误。
我该如何解决?
【问题讨论】:
-
情况不一样。我在 Player 类中有两个团队。
-
该示例对我有用。您的模型中是否有任何其他类可能导致循环依赖/多个级联路径?
TeamType呢,是类还是枚举?
标签: entity-framework ef-code-first relationship entity-framework-migrations