What I need to build is a web application that maintains and shows products. A product has a lot of attributes, some that will be changed or added during the next year. I have 2 options for designing the database and the mvc application.
First alternative is using a products table in the database that maps more or less 1:1 to my MVC model object. This will mean that a product have 4-5 item numbers (my ow, my distributors and my customers), 5-7 prices and so on. Coding against this structure is very easy. Mapping to and from EF <-> Model can be done by automapper, the model can have labels/rules for each field, and creating an editable view is almost as easy as doing a right click create + CSS formatting.
The other route is to use an attribute based approach. Here I define a product as basically an ID + a name. All other attributes are placed in its own table where each product has lots of rows and 1 row = 1 attribute. Each attribute then has a type that defines its datatype, display name, allowed values and so on. I then have to code so that all 3 tables are translated into a model, that this model is written out to an edit page (using a loop for each attribute) according to formatting rules defined in attribute type. And that the input data is not only checked against the model, but also against the rules defined in attribute types.
My question is, in this context (MVC 4, EF database first). What approach is the best?