首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.Net内核中查询PK表时,如何获取FK表数据?

在.Net内核中查询PK表时,如何获取FK表数据?
EN

Stack Overflow用户
提问于 2020-04-06 23:51:05
回答 1查看 43关注 0票数 0

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

但是由Scaffold-DbContext生成的.NET核心模型是这样的:

代码语言:javascript
复制
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时也获取其他表的数据,比如对象关系模型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-07 02:37:06

您的实体应该引用具有FK关系的实体。然后,在查询时,你可以使用EF的Include方法,这样它也可以查询和返回FK表。

你能检查这个链接吗,请docs.microsoft.com/en-us/ef/ef6/querying/related-data

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61063728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档