Я использую EF6 Code First. У меня есть два класса:EF6 Code First - может вызвать циклы или несколько каскадных путей
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);
}
При запуске средства миграции, чтобы обновить базу данных, я получаю следующее сообщение об ошибке:
Вводя ограничение внешнего ключа «FK_dbo.Players_dbo.Teams_TeamNationalId» на Таблица «Игроки» могут вызывать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY. Не удалось создать ограничение. См. Предыдущие ошибки.
Как его решить?
Возможный дубликат [Представление ограничения FOREIGN KEY может вызывать циклы или несколько каскадных путей - почему?] (Http://stackoverflow.com/questions/17127351/introducing-foreign-key-constraint-may-cause-cycles-or - многокаскадные пути) – Colin
Это не тот случай. У меня две команды в классе Player. – janiv
Образец работает на меня. Есть ли у вас какие-либо другие классы в вашей модели, которые могут вызвать круговые зависимости/несколько каскадных путей? Как насчет 'TeamType', это класс или перечисление? –