Хотя я не совсем уверен в вашей конечной цели, у меня может быть выбор для вас. Вам нужна высокодинамичная «сущность», которая позволит вашим пользователям создавать свои собственные структуры данных. Императивные языки, такие как C #, плохо подходят для таких вещей ... и даже с динамическим языком, я думаю, вы, скорее всего, столкнетесь с некоторыми трудностями. Тем не менее, XML является отличным способом представления динамических структур данных специальным способом, создаваемым во время выполнения.
Если вы используете SQL Server, я рекомендую вам создать более простой тип, как показано ниже, и сохранить его в таблице, которая использует тип данных «xml» для одного из столбцов:
public class DynamicEntity
{
public int ID { get; set; }
public string TypeName { get; set; }
public XDocument DynamicContent { get; set; }
}
Указанная выше сущность может быть сохранена в следующей таблице:
CREATE TABLE DynamicEntity
(
ID int IDENTITY(1,1) NOT NULL,
NAME varchar(50) NOT NULL,
DynamicContent xml NULL
)
Учитывая возможности xml в SQL Server, вы все равно сможете запрашивать данные в этом столбце xml. Мало того, что если вы хотите, чтобы пользовательские структуры пользователей были проверены на соответствие схеме, вы также можете поместить эту схему в базу данных и «напечатать» свой столбец xml на этой схеме. Использование столбца XML в SQL Server сопутствует предостережениям, но это может быть простым решением вашей сложной проблемы.