我有一个具有多个相同类型属性的实体。我想在同一张表中包括该类型的所有属性。
您可以通过在实体上调用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。