Как я могу создать внешний ключ, ссылающийся на первичные ключи в нескольких таблицах с помощью postgresql и .NET Core? - PullRequest
0 голосов
/ 03 июля 2019

Я создаю 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, я получаю внутреннюю ошибку сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...