Две ошибки «Введение ограничения FOREIGN KEY в таблице» могут вызвать циклы или несколько каскадных путей» одновременно.C#

Место общения программистов C#
Ответить
Anonymous
 Две ошибки «Введение ограничения FOREIGN KEY в таблице» могут вызвать циклы или несколько каскадных путей» одновременно.

Сообщение Anonymous »

Я застрял в своем курсовом проекте на две недели, пытаясь обновить базу данных SQL Server с помощью миграции. По сути, я создаю приложение FPL, в котором пользователи могут создать свою команду (которая имеет название модели Team, но это команда и другая модель Club, что означает футбольный клуб, например, «Челси»), состоящая из 1 тренера и многих игроков.
У пользователей или их команды, если быть точным, есть любимая команда, которая действует как значок игрока, она просто отображает Liverool или что-то еще, что они выбрали.
Миграция проходит нормально, но я получаю ошибки когда я использую

Код: Выделить всё

dotnet ef database update
Ошибки на данный момент:

Ограничение FOREIGN KEY 'FK_PlayerTeams_Teams_TeamId' в таблице 'PlayerTeams' может вызывать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.


Введение ограничения FOREIGN KEY «FK_Team_Coach_CoachId» в таблице «Team» может вызвать циклы или несколько каскадных путей. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.

Я пытался создать таблицу слияния, например TeamCoach, но это привело к новой ошибке каскадирования. Сопоставление FluentApi ничего не изменило, я заставил ChatGpt переписать эту штуку сто раз, и он сказал: «Я знаю, что сейчас происходит, вот попробуй это», и это снова с треском провалилось.
Вот классы:

Код: Выделить всё

public class Club
{
public int Id { get; set; }
public Coach Coach { get; set; } = null!;
public List
 Players { get; set; } = new();
public List FavoritedBy { get; set; } = new();
}

Код: Выделить всё

public class Coach
{
public int Id { get; set; }
public int ClubId { get; set; }
public Club Club { get; set; } = null!;
public List CoachOfTeams { get; set; } = new();
}

Код: Выделить всё

public class Player
{
public int Id { get; set; }
public int ClubId { get; set; }
public Club Club { get; set; } = null!;
public List Teams { get; set; } = new();
}

Код: Выделить всё

public class PlayerTeam
{
public int Id { get; set; }
public int PlayerId { get; set; }
public Player Player { get; set; } = null!;
public int TeamId { get; set; }
public Team Team { get; set; } = null!;
}

Код: Выделить всё

public class Team
{
public int Id { get; set; }
public string Name { get; set; } = null!;
public int FavoriteClubId { get; set; }
public Club FavoriteClub { get; set; } = null!;
public int CoachId { get; set; }
public Coach Coach { get; set; } = null!;
public List Players { get; set; } = new();
}

Код: Выделить всё

public class AppDbContext : DbContext
{
public DbSet Clubs => Set();
public DbSet Coaches => Set();
public DbSet Players => Set();
public DbSet Teams => Set();
public DbSet PlayerTeams => Set();

protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer(
"Server=;Database=;Trusted_Connection=true;TrustServerCertificate=true");
}
Я даже готов использовать обходные методы, просто хочу наконец исправить это, чтобы наконец начать что-то делать.


Подробнее здесь: https://stackoverflow.com/questions/798 ... les-or-mul
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»