在 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");
}
}
我有一个场景,我希望忽略一个列(这样它就不会在每个包含等中加入)但如果需要的话可以显式包含它。选择每个连接所需的所有其他列对我来说不是一个可行的解决方案。我将用户的个人资料图片存储在数据库中,并且所有者、中间人等几乎加入了每个对象,使得一些查询非常慢。
这种情况有最佳实践吗?
编辑:我想创建第二个 虚拟 模型映射到同一个 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");
}
}