EF Core通过Fluent API按类型配置实体属性

时间:2018-12-27 09:44:30

标签: c# entity-framework entity-framework-core ef-fluent-api

我有一个具有多个相同类型属性的实体。我想在同一张表中包括该类型的所有属性。

您可以通过在实体上调用OwnsOne(o => o.property)来获得同一表中的各个属性。但是我想在该类型的所有属性上执行此操作。

假设我们有以下(有效)示例:

public class Animal 
{
    public int Id { get; set; }
    public ProvidedLength LengthAtBirth { get; set; }
    public ProvidedLength LengthAtDead { get; set; }
}

public class ProvidedLength 
{
    public DateTime SubmissionDate { get; set; }
    public string Unit { get; set; }
    public string Length { get; set; }
}

public class MyDbContext : DbContext
{
    public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { }

    public DbSet<Animal> Animals { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.ApplyConfiguration(new AnimalConfiguration());
    }
}

class AnimalConfiguration : IEntityTypeConfiguration<Animal>
{
    public void Configure(EntityTypeBuilder<Animal> builder)
    {
        // TODO: Apply the OwnsOne configuration all properties of the "ProvidedLength" type
        builder.OwnsOne(a => a.LengthAtBirth);
        builder.OwnsOne(a => a.LengthAtDead);
    }
}

我想对ProvidedLength类型执行此操作,而不是调用每个属性。

我尝试了builder.OwnsOne<ProvidedLength>()builderBuilder.Entity<ProvidedLength>.OwnsOne(),但是在两种情况下,您都需要提供navigationProperty。

0 个答案:

没有答案