【发布时间】:2021-10-17 14:44:21
【问题描述】:
我正在制作一个投票系统。一个Poll 可以有任意数量的PollOptions。 Vote 可以为空(PollOptionId 为空)。
我的模型:
public class Poll
{
public Guid Id { get; set; }
public List<PollOption> Options { get; set; }
// Some more properties.
}
public class PollOption
{
public Guid Id { get; set; }
public Guid PollId { get; set; }
public Poll Poll { get; set; }
public List<Vote> Votes { get; set; }
// Some more properties.
}
public class Vote
{
public Guid Id { get; set; }
public Guid PollId { get; set; } // Needed for blank votes
public Poll Poll { get; set; }
public Guid? PollOptionId { get; set; } // Null if blank vote
public PollOption Option { get; set; }
// Some more properties.
}
迁移时,我遇到了错误消息
在表“Votes”上引入 FOREIGN KEY 约束“FK_Votes_Polls_PollId”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
我可以看到循环,但我不确定如何使我的模型与我的目的有所不同。
是否可以更改设计以避免需要在模型构建器中添加 ON DELETE NO ACTION?
如果没有,我该怎么做?
我的尝试:
modelBuilder.Entity<Vote>()
.HasOne(p => p.Poll)
.WithMany(o => o.Options)
.OnDelete(DeleteBehavior.Restrict);
...这当然行不通,因为PollOption != Vote。
【问题讨论】:
标签: c# database-design ef-code-first