如何使用Postgresql和.NET Core创建一个在多个表中引用主键的外键?

时间:2019-07-03 09:05:08

标签: c# postgresql entity-framework .net-core

我使用.NET Core创建API,并使用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   |

常规设置

|  name   |  setting  |
+---------+-----------+
|  set1   |  a1       |
|  set2   |  t2       |
|  set3   |  s1       |

但是当我想用我的api在表general_setting中创建一行时,出现内部服务器错误。

0 个答案:

没有答案