You are describing a scenario that we have nice and tidy solution for - Artificial Types and Fields
This feature allows you extend your domain model during runtime and still enjoy the performance of normal relational tables and structures.
The approach uses Code First
approach (as we call it - Fluent Mapping
When defining extensions to types or even whole types Telerik Data Access will generate the appropriate mapping and relational definitions including SQL script to update your database on the fly to accommodate the changes.
You can check our Data Access Samples Kit companion product
which contains dedicated sample demonstrating working with Artificial Types and Fields
After downloading and installing the Samples Kit product look for the "Consuming Types Defined During Runtime"
sample in Fluent Mapping
Based on my previous experience in software development Artificial Types are easier to manage and perform better than most alternatives (like Entity-Attribute-Value
pattern that you are describing).
One was note - if you know that your object have weak typing and their schema is very dynamic you may consider switching to NoSQL
persistence solution that will allow you to store whole objects rather than their strict relational representation.
OpenAccess ORM is now Telerik Data Access
. For more information on the new names, please, check out the Telerik Product Map