EF Core table 只有外键
EF Core table with only foreign key
我有这种情况:
第二个table没有继承第一个。它将包含不同的信息
我正在使用 EF Core,但在为两个实体配置模型时遇到了问题。我使用流畅的 API 配置并使用 EF Core 迁移来创建 table。机型及配置如下:
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: Exception has been thrown by the target of an invocation.
System.InvalidOperationException: The navigation '' cannot be added because it targets the keyless entity type 'Table2'. Navigations can only target entity types with keys.
我们怎么能有一个只有外键的table?我不想为主键添加额外的列,因为第二个 table 会经常刷新
如果我遗漏了一些有用的信息,请让我在评论中加入!
提前致谢,
朱利安
正如@Bryan Lewis 在评论中所建议的那样,由于有人遇到了同样的问题,我刚刚向 table
添加了一个主键
我有这种情况:
第二个table没有继承第一个。它将包含不同的信息
我正在使用 EF Core,但在为两个实体配置模型时遇到了问题。我使用流畅的 API 配置并使用 EF Core 迁移来创建 table。机型及配置如下:
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: Exception has been thrown by the target of an invocation.
System.InvalidOperationException: The navigation '' cannot be added because it targets the keyless entity type 'Table2'. Navigations can only target entity types with keys.
我们怎么能有一个只有外键的table?我不想为主键添加额外的列,因为第二个 table 会经常刷新
如果我遗漏了一些有用的信息,请让我在评论中加入!
提前致谢, 朱利安
正如@Bryan Lewis 在评论中所建议的那样,由于有人遇到了同样的问题,我刚刚向 table
添加了一个主键