У меня такая ситуация:
Вторая таблица не наследует первую. Он будет содержать различную информацию
Я использую EF Core и у меня проблемы с настройкой моделей для двух объектов. Я работаю с текущими конфигурациями API и использую EF Core Migrations для создания таблиц. Модели и их конфигурации следующие:
public class Table1
{
public long Id { get; set; }
public string FirstName { get; set; }
public List<Table2> T2 { get; set; }
}
public class Table1Configuration : IEntityTypeConfiguration<Table1>
{
public void Configure(EntityTypeBuilder<Table1> builder)
{
builder.ToTable("table1");
builder.Property(s => s.Id)
.HasColumnName("id")
.HasColumnType("serial");
builder.Property(s => s.FirstName)
.HasColumnName("first_name");
}
}
Вторая:
public class Table2
{
public long Table1Id { get; set; }
public DateTime Timestamp { get; set; }
public double Value { get; set; }
public Table1 T1 { get; set; }
}
public class Table2Configuration : IEntityTypeConfiguration<Table2>
{
public void Configure(EntityTypeBuilder<Table2> builder)
{
builder.ToTable("table2");
builder.Property(s => s.Table1Id)
.HasColumnName("table1_id");
builder.HasNoKey();
builder.Property(s => s.Timestamp)
.HasColumnName("ts");
builder.Property(s => s.Value)
.HasColumnName("value");
builder.HasOne(s => s.T1)
.WithMany(s => s.T2)
.HasForeignKey(s => s.Table1Id);
}
}
Когда я запускаю команду Update-Database
, выдается исключение:
System.Reflection.TargetInvocationException: исключение было сгенерировано целью вызова.
System.InvalidOperationException: навигация '' не может быть добавлена, поскольку она нацелена на тип объекта без ключа 'Table2'. Навигация может ориентироваться только на типы объектов с ключами.
Как мы можем иметь таблицу только с внешними ключами? Я не хочу ставить дополнительный столбец для первичного ключа, потому что вторая таблица будет часто очищаться
Если я пропущу некоторую информацию, которая будет полезна, пожалуйста, попросите меня включить ее в комментарии!
Заранее спасибо, Джулиан