Я создаю API с .NET Core и использую Entity Framework.
Как мне создать внешний ключ, ссылающийся на первичные ключи в нескольких таблицах с Postgresql и .NET Core?
В ядре .NET:
public class GeneralSetting
{
public string Name { get; set; }
[Required]
public string DefaultElement { get; set; }
[ForeignKey("DefaultElement")]
public Access DefaultAccess { get; set; }
[ForeignKey("DefaultElement")]
public Status DefaultStatus { get; set; }
[ForeignKey("DefaultElement")]
public Type DefaultType { get; set; }
}
ApiContext:
modelBuilder.Entity<GeneralSetting>(entity =>
{
entity.ToTable("general_setting");
entity.HasKey(t => t.Name);
entity.Property(t => t.Name)
.HasColumnName("name");
entity.Property(t => t.DefaultElement)
.HasColumnName("default_element")
.HasColumnType("varchar")
.IsRequired();
entity.HasOne(t => t.DefaultType)
.WithMany()
.HasForeignKey(t => t.DefaultElement);
entity.HasOne(t => t.DefaultAccess)
.WithMany()
.HasForeignKey(t => t.DefaultElement);
entity.HasOne(t => t.DefaultStatus)
.WithMany()
.HasForeignKey(t => t.DefaultElement);
});
Я хочу что-то вроде этого:
Таблица Доступ :
| id | name |
+------+-------+
| 1 | a1 |
| 2 | a2 |
Таблица Тип :
| id | name |
+------+-------+
| 1 | t1 |
| 2 | t2 |
Таблица Статус :
| id | name |
+------+-------+
| 1 | s1 |
| 2 | s2 |
Таблица general_setting :
| name | setting |
+---------+-----------+
| set1 | a1 |
| set2 | t2 |
| set3 | s1 |
Но когда я хочу создать строку в таблице general_setting с моим API, я получаю внутреннюю ошибку сервера.