我在表SPE_COMMON_DATA中有一个主键spe_manuscript_num,它是其他表的FK:

但是由Scaffold-DbContext生成的.NET核心模型是这样的:
public partial class SpeCommonData
{
public string SpeManuscriptNum { get; set; }
..
..
public virtual ICollection<SpeAttachment> SpeAttachment { get; set; }
public virtual ICollection<SpeMiscData> SpeMiscData { get; set; }
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<SpeCommonData>(entity =>
{
....
//nothing about FK tables
}
modelBuilder.Entity<SpeMiscData>(entity =>
{
entity.ToTable("SPE_MISC_DATA");
entity.Property(e => e.Id)
.HasColumnName("id")
.HasColumnType("numeric(38, 0)")
.ValueGeneratedOnAdd();
entity.Property(e => e.SpeManuscriptNum)
.IsRequired()
.HasColumnName("spe_manuscript_num")
.HasMaxLength(32)
.IsUnicode(false);
....
entity.HasOne(d => d.SpeManuscriptNumNavigation)
.WithMany(p => p.SpeMiscData)
.HasForeignKey(d => d.SpeManuscriptNum)
.HasConstraintName("FK__SPE_MISC___spe_m__02084FDA");
});
modelBuilder.Entity<SpeAttachment>(entity =>
{
entity.HasKey(e => e.AttachmentId)
.HasName("PK__SPE_ATTA__B74DF4E2D1989600");
entity.ToTable("SPE_ATTACHMENT");
entity.Property(e => e.AttachmentId).HasColumnName("attachment_id");
...
entity.Property(e => e.SpeManuscriptNum)
.HasColumnName("spe_manuscript_num")
.HasMaxLength(32)
.IsUnicode(false);
entity.HasOne(d => d.SpeManuscriptNumNavigation)
.WithMany(p => p.SpeAttachment)
.HasForeignKey(d => d.SpeManuscriptNum)
.HasConstraintName("FK__SPE_ATTAC__spe_m__3EA749C6");
});我的问题是,当我查询表SPE_COMMON_DATA时,我无法基于FK拉取其他表数据,我对modelBuilder.Entity<SpeCommonData>中定义的内容一无所知?
如何在查询SPE_COMMON_DATA时也获取其他表的数据,比如对象关系模型?


发布于 2020-04-07 02:37:06
您的实体应该引用具有FK关系的实体。然后,在查询时,你可以使用EF的Include方法,这样它也可以查询和返回FK表。
你能检查这个链接吗,请docs.microsoft.com/en-us/ef/ef6/querying/related-data
https://stackoverflow.com/questions/61063728
复制相似问题