Задача хранения в базах данных схемы типа Объект — Множество Атрибутов — Значения атрибутов давно стала «классической».
В рамках реляционных СУБД, простейшее решение выглядит как-то так (anti-pattern detected!):
public class Product { public int Id { get; set; } public List<propertyvalue> PropertyValues { get; set; } public string ProductTitle { get; set; } public decimal ProductPrice { get; set; } } public class Property { public int Id { get; set; } public string Title { get; set; } } public class PropertyValue { public int Id { get; set; } public Property Property { get; set; } public string Value { get; set; } }
И это не учитывая потенциальной типизации значений свойств (некоторые могут быть числовыми, другие — датой/временем и т.п.) и полагаясь на ORM для генерации таблицы связи много-ко-многим (Product/PropertyValue).
Continue reading