如何使用实体的EntityFramework可扩展字段进行建模
本文关键字:字段 建模 可扩展 EntityFramework 何使用 实体 | 更新日期: 2023-09-27 17:52:55
我有以下要求,在我的应用程序上的实体将带有一些字段,但是用户需要能够添加额外的字段到实体,然后为这些字段的值。
我在想这样的事情,但我不确定这是否是一个好方法。
基类是一个实体(不确定这里需要添加哪些字段)
public class Entidad
{
}
那么Company类将继承Entity
public class Empresa : Entidad
{
[Key]
public int Id { get; set; }
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; }
public ICollection<CampoAdicional> CamposAdicionales { get; set; }
}
可以看到,有一个额外字段的集合。该类将具有字段名、类型和id
public class CampoAdicional
{
[Key]
public int Id { get; set; }
public string NombreCampo { get; set; }
public Tiposcampo TipoCampo { get; set; }
}
,然后字段值应该是这样的:
public class ValorCampo
{
public Entidad Entidad { get; set; }
public CampoAdicional Campo { get; set; }
public string ValorTexto { get;set ; }
public int ValorNumerico { get; set; }
}
但是我不确定这是否是我的场景的正确模型类,以及它是否会正确创建表。
EF使用延迟加载,因此至少有几个"虚拟"丢失。
在所有不使用基本类型的属性和集合中。可以用附加字段扩展多个实体吗?如果是这样,你需要ValorCampo包含实体(Entidad),但实体应该有Id,所以你需要将Id从Empresa移动到Entidad。否则你需要ValorCampo应该参考Empresa而不是Entidad