在分配了“常规”(映射的)属性值之后分配[NotMapped]属性值

时间:2018-10-23 15:58:01

标签: c# entity-framework

在所有映射的属性从数据库中获取值之后,是否可以将值分配给未映射的属性?例如:

public class ProcessSupervisor
{
    public int ID { get; set; }
    public int MaximumConcurrentProcesses { get; set; }

    [NotMapped]
    public int AvailableProcessSlots { get; set; }
}

我想将MaximumConcurrentProcesses的值保留在数据库中,并在实体框架实例化AvailableProcessSlots DBSet并将相应的值分配给对象属性后,将该值作为默认值分配给ProcessSupervisor 。显然,我无法在类构造函数中将MaximumConcurrentProcesses的值分配给AvailableProcessSlots,因为MaximumConcurrentProcesses尚未从数据库接收到它的值。是否有适当的方法可以做到而又不会以某种怪异而笨拙的方式初始化AvailableProcessSlots值呢?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

public class ProcessSupervisor
{
    public int ID { get; set; }
    public int MaximumConcurrentProcesses { get; set; }

    [NotMapped]
    private int? availableProcessSlots = null;
    public int AvailableProcessSlots
    {
        get
        {
            return availableProcessSlots ?? MaximumConcurrentProcesses;
        }
        set
        {
            availableProcessSlots = value;
        }
    }
}