我使用.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中创建一行时,出现内部服务器错误。