Cześć,
mam problem z prawidłowym ustawieniem relacji między tabelami.
Mam dwie tabele:
public class Tickets
{
[Key]
[Column(TypeName = "uniqueidentifier")]
[Required]
public Guid TicketID { get; set; } = default!;
[Column(TypeName = "uniqueidentifier")]
[Required]
public Guid OwnerID { get; set; } = default!;
[Column(TypeName = "uniqueidentifier")]
[Required]
public Guid TechnicianID { get; set; }
[Column(TypeName = "datetimeoffset(0)")]
[Required]
public DateTimeOffset DateTimeCreated { get; set; } = default!;
[Column(TypeName = "nvarchar(75)")]
[Required]
public string Title { get; set; } = default!;
// Relationships one-to-many.
public User Owner { get; set; } = default!;
public User Technician { get; set; } = default!;
}
public class Users
{
[Key]
[Column(TypeName = "uniqueidentifier")]
[Required]
public Guid UserID { get; set; } = default!;
[Column(TypeName = "nvarchar(50)")]
[Required]
public string FirstName { get; set; } = default!;
[Column(TypeName = "nvarchar(50)")]
[Required]
public string LastName { get; set; } = default!;
// Relationships one-to-many.
[InverseProperty("Owner")]
public virtual ICollection<Ticket> OwnerTickets { get; set; } = default!;
[InverseProperty("Technician")]
public virtual ICollection<Ticket> TechnicianTickets { get; set; } = default!;
}
A w dbContext:
modelBuilder.Entity<Tickets>()
.HasOne(p => p.Owner)
.WithMany(b => b.OwnerTickets)
.HasForeignKey(s => s.OwnerID)
.OnDelete(DeleteBehavior.ClientCascade);
modelBuilder.Entity<Tickets>()
.HasOne(p => p.Technician)
.WithMany(b => b.TechnicianTickets)
.HasForeignKey(s => s.TechnicianID)
.OnDelete(DeleteBehavior.ClientSetNull);
Całość wygląda tak:
Czyli dwa pola - "OwnerID" oraz "TechnicianID" odnosza się do rekordów w tabeli "User".
Mogą być powiązane z tym samym "Userem", ale mogą być również powiązane z różnymi "Userami".
Jednak podczas dodawania nowego rekordu do bazy mam wyjątek z takim komunikatem:
The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Tickets_Users_OwnerID". The conflict occurred in database "TicketsDB", table "dbo.Users", column 'UserID'.
Mogę prosić o wskazówki jak sobie z tym poradzić?