Hello tamasflamich,
Yes, I did consider the signature that you suggesting. Currently we don't reuse the same DbCommandDefinition instance, but even if we did choose to use this optimization it would still be possible to do on the provider side. The main reason I decided to pass DbCommandTree instead is that it allows the provider to build one DbCommandDefinition that represents several trees. The secondary reason is in the future we might add temporary identifiers to the tree to allow batching of dependent commands.