运行构造函数时,实体框架实体模型的值为空

本文关键字:实体模型 框架 构造函数 实体 运行 | 更新日期: 2023-09-27 18:32:22

我正在我的项目中实现一个 POCO,它表示数据库表中的一行。我想修改构造函数中的一个值。

不幸的是,似乎只有在运行构造函数才会填充这些值,因此我无法执行所需的逻辑。这是一个错误还是设计使然?

可能应该提到我正在使用代码优先。

public partial class CheckpointValue
    {
        [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        [Column("saljare")]
        public int SalesAgentId { get; set; }
        [Column("volym")]
        public int Value { get; set; }
        [Column("datum")]
        public DateTime Date { get; set; }
        [Column("typ")]
        public string Type { get; set; }

        public CheckpointValue()
        {
            // Values empty... Why haven't they been populated when the constructor is run?
        }
    }

运行构造函数时,实体框架实体模型的值为空

不幸的是,这些值似乎仅在 构造函数已运行,因此我无法执行所需的 逻辑。这是一个错误还是设计使然?

这是设计使然。顺便说一句,如何在不提供构造函数参数的情况下在构造时获得这些属性已经填充?

也许您试图在错误的地方实现您的逻辑。如果您正在寻找实现业务规则、域验证或谁知道什么,则应在另一个类中完成。例如,您的存储库将是返回请求对象之前执行操作的好地方。

public CheckpointValue GetById(Guid id)
{
      CheckpointValue checkpointValue = YourDbContext.CheckpointValues.Find(id);
      // Implement here what you wanted in your class constructor...
      return checkpointValue;
}