Код: Выделить всё
public class MyParent
{
public required Guid Id { get; set; };
public required MyChild Child { get; set; };
}
public class MyChild
{
public required Guid Id { get; set; };
public required IEnumerable Parameters { get; set; };
}
public class MyChildParameter
{
public required Guid Id { get; set; };
public required string Value { get; set; };
}
Я использую OnModelCreating, но логика обозначений изолирована для чистоты:
Код: Выделить всё
internal static class MyCreator()
{
internal static void CreateMyParent(ModelBuilder mb)
{
mb.Entity()
.HasKey(p => p.Id);
mb.Entity()
.ComplexProperty(p => p.Fase)
.IsRequired();
}
internal static void CreateMyChild(ModelBuilder mb)
{
mb.Entity()
.HasKey(p => p.Id);
mb.Entity()
.Property(p => p.Name)
.IsRequired();
}
internal static void CreateMyChildParameter(ModelBuilder mb)
{
mb.Entity()
.HasKey(p => p.Id);
mb.Entity()
.Property(p => p.Value)
.IsRequired();
}
}
Код: Выделить всё
mb.Entity()
.HasMany(f => f.Parameters)
.WithOne(p => p.MyParent)
.HasForeignKey(p => p.MyParentId)
.IsRequired();
Невозможно создать «DbContext» типа «МойКонтекст». Исключение
«Невозможно настроить навигацию «MyParent.MyChild#MyChild.Parameters»
типа «IEnumerable», поскольку сложные типы не поддерживают
навигации. Игнорируйте это свойство, используя атрибут «[NotMapped]» или
используя «EntityTypeBuilder.Ignore» в «OnModelCreating». был выброшен
при попытке создать экземпляр.
Игнорировать или не сопоставлять не вариант, потому что мне нужны эти объекты.
Вопрос: Как мне настроить связь «один-ко-многим», чтобы избежать этого исключения?
Подробнее здесь: https://stackoverflow.com/questions/792 ... tation-one