modelBuilder.Entity<A>(aBuilder => { aBuilder.HasKey("Id"); aBuilder.Property<Guid>("Id"); aBuilder.OwnsMany<B>( "bList", bBuilder => { bBuilder.HasKey("Id"); // Without it Ef core sets pair (AId, Id) as key but it is not needed - only one key (Id) is enough bBuilder.Property<Guid>("Id"); bBuilder.Property<Guid>("AId").HasColumnName("AId"); bBuilder.WithOwner().HasForeignKey("AId"); bBuilder.OwnsOne<C>(b => b.C, cBuilder => { cBuilder.Property<Guid>("Id"); cBuilder.Property<Guid>("BId").HasColumnName("BId"); cBuilder.WithOwner().HasForeignKey("BId"); }); } ); });