我有两个模型:
public enum FieldDataType
{
Text,
Integer,
BigInteger,
Double,
Boolean
}
public class Field
{
[Required] public int Id { get; set; }
[Required, MaxLength(100)] public string CategoryId { get; set; }
[Required, MaxLength(100)] public string Name { get; set; }
public FieldDataType DataType { get; set; }
public bool IsSpecification { get; set; }
public IList<FieldMap> FieldMaps { get; set; }
}
还有
public class FieldMap
{
public int Id { get; set; }
public int FeedId { get; set; }
public int FieldId { get; set; }
[Required, MaxLength(100)] public string Path { get; set; }
public Field Field { get; set; }
}
字段可以有多个 fieldMaps ,而 fieldMap 只能有一个 field 。 字段是父级。如果已删除,则应删除所有 FieldMaps 。
如果删除了 FieldMap ,则不应删除 Field 。
我这样建立我的关系:
modelBuilder.Entity<Field>().HasMany(m => m.FieldMaps).WithOne().HasForeignKey(m => m.FieldId);
运行update-database
时出现此错误:
在表“映射”上引入外键约束“ FK_Mappings_Fields_FieldId”可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。
因此,我尝试通过执行以下操作来禁用子表上的级联删除:
modelBuilder.Entity<FieldMap>().HasOne(m => m.Field).WithMany().OnDelete(DeleteBehavior.Restrict);
但是我仍然得到错误。 有人知道我在做什么错吗?