【发布时间】:2022-01-29 20:19:42
【问题描述】:
我有以下模型类。我希望 TripId 和 TouristId 是出勤实体的复合键。
现在我在执行 sql 时收到此错误:
CREATE TABLE [Attendance] (
[Id] int NOT NULL IDENTITY,
[TouristId] nvarchar(450) NOT NULL,
[TripId] int NOT NULL,
CONSTRAINT [PK_Attendance] PRIMARY KEY ([Id]),
CONSTRAINT [FK_Attendance_AspNetUsers_TouristId] FOREIGN KEY ([TouristId]) REFERENCES [AspNetUsers] ([Id]) ON DELETE CASCADE,
CONSTRAINT [FK_Attendance_Trip_TripId] FOREIGN KEY ([TripId]) REFERENCES [Trip] ([Id]) ON DELETE CASCADE);
引入 FOREIGN KEY 约束“FK_Attendance_Trip_TripId” 表“出勤”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN 关键约束。无法创建约束或索引。见上 错误。
public class Attendance
{
public virtual Trip Trip { get; set; }
public virtual ApplicationUser Tourist { get; set; }
}
public class ApplicationUser : IdentityUser
{
[PersonalData]
[Column(TypeName = "nvarchar(MAX)")]
public string FirstName { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(MAX)")]
public string Surname { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(MAX)")]
public string BirthDate { get; set; }
}
public class Trip
{
public int TripId { get; set; }
public string TripDate { get; set; }
public int TripDuration { get; set; }
public int TripLength { get; set; }
public int TripSeats { get; set; }
public Trail Trail { get; set; }
public ApplicationUser Guide { get; set; }
}
编辑:
public class Attendance
{
public int AttendanceId { get; set; }
public int? TripId { get; set; }
public int? TouristId { get; set; }
public virtual Trip Trip { get; set; }
public virtual ApplicationUser Tourist { get; set; }
}
但外键仍设置为“NOT NULL”。
【问题讨论】:
标签: c# .net entity-framework asp.net-core asp.net-identity