Я пытаюсь просто заполнить две таблицы EF core 3, но это не работает. Это такая маленькая операция, но кажется, что EF не может это сделать.
Модель объекта
public class Object
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
[ForeignKey("Building")]
public int BuildingId { get; set; }
public Building Building { get; set; }
}
Модель здания
public class Building
{
[Key]
public int Id { get; set; }
[Required]
public string Name { get; set; }
public virtual List<Object> Objects { get; set; }
}
Класс контекста
public class AppDatabaseContext : DbContext
{
private static readonly DbContextOptions options = new DbContextOptionsBuilder<AppDatabaseContext>().UseInMemoryDatabase("INMEM-DB").EnableSensitiveDataLogging().Options;
public AppDatabaseContext() : base(options)
{
}
public DbSet<Building> Buildings { get; set; }
public DbSet<Object> Objects { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Object>().HasOne(i => i.Building).WithMany(b => b.Objects);
modelBuilder.Entity<Building>().HasMany(b => b.Objects).WithOne(i => i.Building);*/
Building testBuilding = new Building()
{
Id = 1,
Name = "Test Building"
};
modelBuilder.Entity<Building>(b =>
{
b.HasData(testBuilding);
});
modelBuilder.Entity<Object>(o =>
{
o.HasData(new Object()
{
Id = 1,
Name = "Test Object",
Building = testBuilding,
});
});
}
}
Сообщение об ошибке
System.InvalidOperationException: 'Начальный объект для Тип сущности «Объект» со значением ключа «Id: 1» не может быть добавлен, поскольку для него установлена навигация «Строительство». Для заполнения отношений необходимо добавить начальный объект связанной сущности в «Building» и указать значения внешнего ключа {'BuildingId'}. '
Почему это не работает? Пожалуйста, помогите мне. Я собираюсь отследить sh всю эту чушь и переписать ее в Java (что будет намного быстрее).