【发布时间】:2019-09-05 20:04:19
【问题描述】:
我正在通过实体框架创建一个表,其中包含同一个表的 3 个外键Account:
public class EvaluationFormQuestionEvaluator
{
public Guid Id { get; set; }
public Account Account { get; set; }
public Guid AccountId { get; set; }
public EvaluationForm EvaluationForm { get; set; }
public Guid FormId { get; set; }
public Guid Evaluator_1_Id { get; set; }
public Account Evaluator_1 { get; set; }
public Guid Evaluator_2_Id { get; set; }
public Account Evaluator_2 { get; set; }
}
当我生成迁移并运行应用程序时遇到此错误
System.Data.SqlClient.SqlException:在表“EvaluationFormQuestionEvaluator”上引入 FOREIGN KEY 约束“FK_EvaluationFormQuestionEvaluator_Evaluator1”可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
在IEntityTypeConfiguration类中,定义如下
public class EvaluationFormQuestionEvaluatorConfiguration : IEntityTypeConfiguration<EvaluationFormQuestionEvaluator>
{
public void Configure(EntityTypeBuilder<EvaluationFormQuestionEvaluator> entity)
{
entity.ToTable("EvaluationFormQuestionEvaluator", ApplicationDataContext.DEFAULT_SCHEMA);
entity.Property(e => e.Id).ValueGeneratedNever();
entity.HasOne(d => d.EvaluationForm)
.WithMany()
.HasForeignKey(d => d.FormId)
.IsRequired()
.HasConstraintName("FK_EvaluationFormQuestionEvaluator_EvaluatorForm");
entity.HasOne(d => d.Account)
.WithMany()
.HasForeignKey(d => d.AccountId)
.IsRequired()
.HasConstraintName("FK_EvaluationFormQuestionEvaluator_Account");
entity.HasOne(d => d.Evaluator_1)
.WithMany()
.HasForeignKey(d => d.Evaluator_1_Id)
.IsRequired()
.HasConstraintName("FK_EvaluationFormQuestionEvaluator_Evaluator1");
entity.HasOne(d => d.Evaluator_2)
.WithMany()
.HasForeignKey(d => d.Evaluator_2_Id)
.IsRequired()
.HasConstraintName("FK_EvaluationFormQuestionEvaluator_Evaluator2");
}
}
这种形式是最正确的创建方式吗?这个错误的解决方法是什么?
【问题讨论】:
标签: c# sql-server entity-framework