Невозможно настроить исключение навигации при настройке гибкой нотации API «один ко многим» с использованием кода EF CorC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно настроить исключение навигации при настройке гибкой нотации API «один ко многим» с использованием кода EF Cor

Сообщение Anonymous »

Для этих объектов:

Код: Выделить всё

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; };
}
Я настраиваю свободные нотации API, чтобы обогатить модели своей предметной области, чтобы их можно было использовать с EF Core в инфраструктуре, и придерживаюсь принципа открытости/закрытости.
Я использую 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»