How to know the semantics of the entities on the fly without a static class.
It is responsibility of your code. If your product
is tenant-dependent then the only thing you need is to check your tenant on the fly and choose the right logic.
I know how to design the database. I asked about the design in business layer. Where I have business logic for different tenants with different requirements for an entity orto many of them. How to handle that when I don't have a specific entity to add methods on
I would use tenant-dependent strategies to solve it.
Strategy (GoF patterns): This pattern defines a family of algorithms, encapsulates each one, and makes them interchangeable at runtime. This pattern is used when you have some logic and you want it to vary independently of the client who uses it while still having an extensible model.
To solve the next issue,
How to convey different versions of the entity from database to business layer for processing and then to the web client for display and edits.
I think, you can use either inheritance or expose product's properties as single one generic collection of properties.
Anyway you are the one who knows your project and can choose the better solution. There is no silver bullet.