Включить игнорируемый столбец в EFCore - PullRequest
0 голосов
/ 23 марта 2020

У меня есть сценарий, в котором я бы sh игнорировал столбец (чтобы он не включался при каждом включении и т. Д. c.), Но включал его явно, если мне нужно. Выбор всех остальных столбцов, необходимых для каждого соединения, не является для меня практичным решением. Я храню фотографию профиля пользователя в БД и владельца, midifier et c. присоединяется практически к каждому объекту, что делает некоторые запросы довольно медленными.

Есть ли лучшая практика для этого сценария?

Редактировать: я думал о создании 2-го виртуального Модель сопоставлена ​​с той же таблицей, содержащей только один столбец, но две модели сопоставлены с одним и тем же швом таблицы, чтобы создать некоторые проблемы.

1 Ответ

1 голос
/ 24 марта 2020

Как вы добавили в свой раздел редактирования. Вот так я решил похожую проблему. Это работает для меня, и это работает в производстве сегодня. И я могу легко включить поле тела, когда мне нужно.

   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");

        }

    } 
...