在 EF Core 中包含忽略列

Include ignored column in EFCore

我有一个场景,我希望忽略一个列(这样它就不会在每个包含等中加入)但如果需要的话可以显式包含它。选择每个连接所需的所有其他列对我来说不是一个可行的解决方案。我将用户的个人资料图片存储在数据库中,并且所有者、中间人等几乎加入了每个对象,使得一些查询非常慢。

这种情况有最佳实践吗?

编辑:我想创建第二个 虚拟 模型映射到同一个 table 只包含这一列,但两个模型映射到同一个 table seam做一些问题。

正如您在编辑部分添加的那样。这就是我解决类似问题的方法。 这对我有用,它今天在生产中运行。 而且我可以在需要时轻松包含提交的 Body。

   public class Content 
    {
        public Guid Id { get; set; }
        public string Heading { get; set; }
        public string Preamble { get; set; }
        public virtual ContentBody Body { get; set; }
    }

    public class ContentBody
    {
        public string Body { get; set; }
        public Guid Id { get; set; }
    }

这是我进行模型映射的地方:

public class ContentMap : IEntityTypeConfiguration<Content>
    {
        public void Configure(EntityTypeBuilder<Content> builder)
        {
            // Primary Key
            builder.ToTable("Content");
            builder.HasKey(e => e.Id);
            builder.Property(e => e.Id).ValueGeneratedOnAdd();
            builder.Property(p => p.Heading).HasColumnName("Heading");
            builder.Property(p => p.Preamble).HasColumnName("Preamble");

            // Relationships
            builder.HasOne(t => t.Body)
                .WithOne().HasForeignKey<ContentBody>(t => t.Id);
        }

    }  

    public class ContentBodyMap : IEntityTypeConfiguration<ContentBody>
    {
        public void Configure(EntityTypeBuilder<ContentBody> builder)
        {
            // Primary Key
            builder.ToTable("Content");
            builder.HasKey(e => e.Id);
            builder.Property(p => p.Body).HasColumnName("Body");

        }

    }