在模型中赋值是正确的吗';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;
}
它运行良好,但我只是想知道这种方法是否正确,因为我找不到任何关于它的信息。
这是完全正确的。另一个选项是将默认值添加到迁移中
AddColumn("dbo.MyTable", "MyDateTime", c => c.DateTime(nullable: false, defaultValueSql: "GETDATE()"));
可以使用构造函数为实体设置默认值。只需注意设置实体引用(如this.Group = new Group();
)这是你永远不应该做的事情
设置DateCreated
是一种有点特殊的情况。您可能希望在实际保存对象时执行此操作,例如在DbContext.SaveChanges()
的覆盖中。我个人的偏好甚至是通过数据库默认值/触发器来实现,因此您可以独立于本地时钟和UTC日期/时间设置。