我们正在使用.NET Core和带有Code First的EF Core开发应用程序,因此我们正在使用Migrations创建和扩展数据库。 该应用程序将用于设置约定。因此,有演讲者,会议和不同主题。 我有两个实体。 WishlistSpeaker和Track,它们形成多对多关系。使用Fluent API,我使用两个表中的ID创建了一个联接表。现在,当我创建带有曲目列表的wishlistSpeaker时,它会整齐地存储在WishlistspeakerTrack连接表中。当我尝试更新该WishlistSpeaker并添加或删除曲目时,扬声器和WishlistSpeakerTracks均被删除。我在调试中没有看到任何错误。
我尝试在迁移中更改onDelete和OnUpdate操作,然后重新应用它们。看到我的代码中没有错误,我认为它与数据库有关,所以我花了大部分时间在数据库中搜索。
WishlistSpeaker实体
public class WishlistSpeaker
{
[Key]
public int WishlistSpeakerId { get; set; }
public string FirstName { get; set; }
public string Name { get; set; }
public int EventID { get; set; }
public string Company { get; set; }
public string Mail { get; set; }
public string Country { get; set; }
public string Twitter { get; set; }
public List<WishlistSpeakerTrack> WishlistSpeakerTracks { get; set; }
public int StatusId { get; set; }
public Status Status { get; set; }
public string LinkedIn { get; set; }
}
Track实体
public class Track
{
[Key]
public int TrackId { get; set; }
[Required]
public string TrackName { get; set; }
public int EventId { get; set; }
public Event Event { get; set; }
public List<WishlistSpeakerTrack> WishlistSpeakerTracks { get; set; }
}
这是为JoinTable创建的实体
public class WishlistSpeakerTrack
{
[Key]
public int TrackId { get; set; }
public Track Track { get; set; }
[Key]
public int WishlistSpeakerId { get; set; }
public WishlistSpeaker WishlistSpeaker { get; set; }
}
这是在迁移中创建的内容。现在将OnDelete设置为NoAction,但以前它是Restrict
migrationBuilder.CreateTable(
name: "WishlistSpeakerTrack",
columns: table => new
{
TrackId = table.Column<int>(nullable: false),
WishlistSpeakerId = table.Column<int>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_WishlistSpeakerTrack", x => new { x.TrackId, x.WishlistSpeakerId });
table.ForeignKey(
name: "FK_WishlistSpeakerTrack_Track_TrackId",
column: x => x.TrackId,
principalTable: "Track",
principalColumn: "TrackId",
onDelete: ReferentialAction.NoAction);
table.ForeignKey(
name: "FK_WishlistSpeakerTrack_WishlistSpeakers_WishlistSpeakerId",
column: x => x.WishlistSpeakerId,
principalTable: "WishlistSpeakers",
principalColumn: "WishlistSpeakerId",
onDelete: ReferentialAction.NoAction);
});
我不会在不删除WishlistSpeaker和JoinTable的情况下进行更新。
答案 0 :(得分:0)
我都做了,但都没有。
我想我找到了问题。在我的ContextModelSnapshot中,它仍然设置为input type file
我该如何更改?
onDelete: ReferentialAction.Cascade