我有一个这样的课程:
public class Empresa
{
public string Nombre { get; set; }
public string NIT { get; set; }
public string NombreRepresentanteLegal { get; set; }
public string TelefonoRepresentanteLegal { get; set; }
public string NombreContacto { get; set; }
public string TelefonoContacto { get; set; }
}
但是在我的应用程序中,我希望用户能够添加自定义属性,例如twitter句柄,但是我没有找到如何做到的文档,我听说过EAV模型,但那不是性能
答案 0 :(得分:1)
您可以将其他数据作为XML存储到XML列中,并让客户端适当地反序列化/序列化元数据。当您不知道数据的结构,或者是否可以在运行时更改结构时,Xml可以是一个可行的解决方案。
您还可以使用INDEX XML来帮助进行碎化/查询,因此可以在处理大型xml文档时保持性能。
您的类可以包含ExtraPropertiesElement,它接受XML字符串,并将其解析为XElement,然后您可以使用XPath来查询请求的xml元素/属性。
这种方法的一个问题是,所有其他属性都以XML格式存储在数据库中,并且对数据执行查询并不容易。这样做很简单,但它并不像从表中选择列名那么简单。
您可以阅读有关XML数据类型和用途here的更多信息 您还可以阅读有关如何查询XML列存储here。
的信息public class Empresa
{
public string Nombre { get; set; }
public string NIT { get; set; }
public string NombreRepresentanteLegal { get; set; }
public string TelefonoRepresentanteLegal { get; set; }
public string NombreContacto { get; set; }
public string TelefonoContacto { get; set; }
[Column(TypeName="xml")]
public string ExtraProperties { get; set; }
[NotMapped]
public XElement ExtraPropertiesElement
{
get { return XElement.Parse(ExtraProperties ); }
set { ExtraProperties = value.ToString(); }
}
}