在模型中赋值是正确的吗';s在实体框架中的构造函数';s代码优先的方法

本文关键字:构造函数 代码 方法 框架 模型 赋值 实体 | 更新日期: 2023-09-27 18:30:01

我需要在模型中有一个属性来存储它的创建日期。它看起来像这样:

public class User
{
    public User()
    {
        this.DateCreated = DateTime.Now;
    }
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime DateCreated { get; set; }
}

我的问题特别是关于模型构造函数中DateCreated属性的赋值:

public User()
{
    this.DateCreated = DateTime.Now;
}

它运行良好,但我只是想知道这种方法是否正确,因为我找不到任何关于它的信息。

在模型中赋值是正确的吗';s在实体框架中的构造函数';s代码优先的方法

这是完全正确的。另一个选项是将默认值添加到迁移中

AddColumn("dbo.MyTable", "MyDateTime", c => c.DateTime(nullable: false, defaultValueSql: "GETDATE()"));

可以使用构造函数为实体设置默认值。只需注意设置实体引用(如this.Group = new Group();)这是你永远不应该做的事情

设置DateCreated是一种有点特殊的情况。您可能希望在实际保存对象时执行此操作,例如在DbContext.SaveChanges()的覆盖中。我个人的偏好甚至是通过数据库默认值/触发器来实现,因此您可以独立于本地时钟和UTC日期/时间设置。