EF8 — пропущенная навигация «FurnitureItem.HandItems» не имеет связанного с ней внешнего ключа.C#

Место общения программистов C#
Ответить
Anonymous
 EF8 — пропущенная навигация «FurnitureItem.HandItems» не имеет связанного с ней внешнего ключа.

Сообщение Anonymous »

Полная ошибка

System.InvalidOperationException: с пропущенной навигацией «FurnitureItem.HandItems» не связан внешний ключ. Для каждой навигации по пропуску должен быть настроен внешний ключ.
Настройка

Настройка:

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

modelBuilder.Entity()
.HasMany(c => c.HandItems)
.WithMany(x => x.FurnitureItems)
.UsingEntity("furniture_hand_items",
l => l.HasOne(typeof(FurnitureItem)).WithMany().HasForeignKey("furniture_item_id").HasPrincipalKey(nameof(FurnitureItem.Id)),
r => r.HasOne(typeof(HandItem)).WithMany().HasForeignKey("hand_item_id").HasPrincipalKey(nameof(HandItem.Id)),
j => j.HasKey("furniture_item_id", "hand_item_id"));
Объекты:

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

public class FurnitureItem
{
public int Id { get; init; }
public string? Name { get; init; }
public ICollection HandItems { get; init; } = [];
}

public class HandItem
{
[Key] public int Id { get; set; }
public string Name { get; set; }
public ICollection FurnitureItems { get; init; } = [];
}
Столы:
  • furniture_items
  • hand_items
  • furniture_hand_items (стол-мост)


Подробнее здесь: https://stackoverflow.com/questions/784 ... eign-key-a
Ответить

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

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

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

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

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