如何使用实体的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; }
}

但是我不确定这是否是我的场景的正确模型类,以及它是否会正确创建表。

如何使用实体的EntityFramework可扩展字段进行建模

EF使用延迟加载,因此至少有几个"虚拟"丢失。

在所有不使用基本类型的属性和集合中。

可以用附加字段扩展多个实体吗?如果是这样,你需要ValorCampo包含实体(Entidad),但实体应该有Id,所以你需要将Id从Empresa移动到Entidad。否则你需要ValorCampo应该参考Empresa而不是Entidad