У меня есть две модели:
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; }
}
A поле может иметь множество fieldMaps и fieldMap может иметь только одно поле . Поле является родительским. Если он удален, то он должен удалить все FieldMaps .
. Если FieldMap удален, он не должен удалять Поле .
Я установил свои отношения следующим образом:
modelBuilder.Entity<Field>().HasMany(m => m.FieldMaps).WithOne().HasForeignKey(m => m.FieldId);
Когда я запускаю update-database
, я получаю эту ошибку:
Введение ограничения FOREIGN KEY '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);
Но я все еще получаю ошибку. Кто-нибудь знает, что я делаю не так?