Как получить данные таблицы FK при запросе таблицы PK в ядре. Net? - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть первичный ключ spe_manuscript_num в таблице SPE_COMMON_DATA, и это FK для других таблиц:

enter image description here

Но. NET Базовая модель генерируется Scaffold-DbContext следующим образом:

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, например модель ORM?

enter image description here

enter image description here

1 Ответ

0 голосов
/ 06 апреля 2020

Ваша сущность должна иметь ссылку на сущности, имеющие отношения FK. Затем при запросе вы можете использовать метод Include EF, чтобы он также запрашивал и возвращал таблицы FK.

Можете ли вы проверить эту ссылку, пожалуйста, docs.microsoft.com/en-us/ef/ef6/querying/related -data

...