Задача хранения в базах данных схемы типа Объект — Множество Атрибутов — Значения атрибутов давно стала «классической».
В рамках реляционных СУБД, простейшее решение выглядит как-то так (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