내 Asp.Net Mvc 프로젝트에 4 개의 모델 클래스가 있습니다. 엔티티 프레임 워크 코드 우선 (자동 마이그레이션)을 사용하고 있습니다. 나는 update-database 명령을 실행할 때 다음과 같은 오류가 발생합니다.Entity Framework 코드 첫 번째 여러 계단식 오류
사이클 또는 여러 개의 계단식 경로를 일으킬 수 테이블 '티켓'에 FOREIGN KEY 제약 조건 'FK_dbo.Tickets_dbo.Users_CreatedUserId'를 소개합니다. NO DELETE NO ACTION 또는 UP UP NO 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'테이블에는 많은 Tickets과 많은 TicketMessages가 있고 동시에 Ticket에는 많은 TicketMessages가 있기 때문입니다. – Szer
예, 그렇게 될 것입니다. 사용자는 티켓 및 티켓 메시지를 작성할 수 있기 때문입니다. –
그러나 특정 'User'를 삭제하면 SQL 엔진이 어떻게 해야할지 알 수 없습니다. 말 그대로 "ON DELETE NO ACTION"을 지정하거나 커스텀'delete trigger'를 만드십시오. – Szer