动态地将属性添加到实体框架对象
本文关键字:实体 框架 对象 添加 属性 动态 | 更新日期: 2023-09-27 17:55:12
我有这样的类:
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 模型,但这并不性能
您可以将附加数据作为 XML 存储到 XML 列中,并让客户端适当地反序列化/序列化元数据。当您不知道数据的结构,或者可以在运行时更改结构时,XML 可能是一个可行的解决方案。
您还可以对 XML 进行索引以帮助切碎/查询,因此在处理大型 xml 文档时可以保持性能。
您的类可以包含一个 ExtraPropertiesElement,它获取 XML 字符串并将其解析为 XElement,然后您可以利用 XPath 来查询请求的 xml 元素/属性。
此方法的一个问题是,所有其他属性都存储在数据库中的 XML 中,并且对数据执行查询并不容易。 这样做很简单,但并不像从表中选择列名那么简单。
您可以在此处阅读有关 XML 数据类型和用法的更多信息。
您还可以在此处阅读有关如何查询 XML 列存储的信息。
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(); }
}
}