У меня есть 4 класса модели в моем проекте Asp.Net Mvc. Я сначала использую Entity Framework Code (Автоматическая миграция). Я, когда запускаю команду update-database, получаю следующую ошибку;Код элемента Entity Framework Сначала один для многих ошибок каскада
Представляя ограничение внешнего ключа «FK_dbo.Tickets_dbo.Users_CreatedUserId» на столе «» Билеты могут вызвать циклов или несколько путей каскада. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY. Не удалось создать ограничение или индекс. См. Предыдущие ошибки.
В чем проблема?
//Company Class
public class Company
{
public int Id { get; set; }
[Required, StringLength(100)]
public string Title { get; set; }
public virtual ICollection<User> Users { get; set; } = new HashSet<User>();
}
//User Class
public class User
{
public int Id { get; set; }
[Required, StringLength(50)]
public string UserName { get; set; }
[Required, StringLength(100)]
public string FullName { get; set; }
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
}
//Ticket Class
public class Ticket
{
public int Id { get; set; }
[Required]
public DateTime CreationDate { get; set; }
[Required, StringLength(100)]
public string Title { get; set; }
public bool IsClosed { get; set; }
public int CreatedUserId { get; set; }
public virtual User CreatedUser { get; set; }
public virtual ICollection<TicketMessage> Messages { get; set; } = new HashSet<TicketMessage>();
}
//TicketMessage Class
public class TicketMessage
{
public int Id { get; set; }
public DateTime Date { get; set; }
[Required]
public string Message { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
public int TicketId { get; set; }
public virtual Ticket Ticket { get; set; }
}
Это потому, что в таблице 'Users' есть много« билетов », а также многие« TicketMessages », и одновременно« Ticket »имеет много« TicketMessages ». – Szer
Да, это должно быть так. Потому что пользователи могут создавать билет и билет. –
Но SQL-движок не знает, что делать, если вы удаляете один конкретный «Пользователь». Вы должны сделать так, как это буквально сказано: укажите, следует ли «ВКЛЮЧИТЬ УДАЛЕНИЕ НЕТ ДЕЙСТВИЯ» или сделать пользовательский «триггер удаления» – Szer