c# - 在模型上使用 DateTime.UtcNow 总是在实体中创建迁移

标签 c# entity-framework ef-code-first

我有一些具有 CreatedDate 和/或 UpdatedDate 属性的模型,在我的播种中,我将它们设置为 DateTime.UtcNow。

new TestModel()
{
    Id = 1,
    Name = name,
    CreatedDateUtc = DateTime.UtcNow,
    CreatedBy = "Seed",
    UpdatedDateUtc = DateTime.UtcNow,
    UpdatedBy = "Seed",
    DeletedDateUtc = null,
    DeletedBy = null,
},

现在,即使种子数据在数据库中,EF 认为它需要用新日期更新它们。这是预期的行为吗?我是否坚持为这些列指定日期?像这样的东西:
DateTime(2020, 01, 01, 12, 00, 00, DateTimeKind.Utc)

最佳答案

使用 HasData 播种,EF 将每次都将日期解析为新的日期。

如果我是你,我会通过固定日期使用可预测和可重复的种子。

或者如果你真的需要使用 Now,你可以试试 manual migration并事先检查您的表种子是否已经使用一些自定义逻辑运行。

关于c# - 在模型上使用 DateTime.UtcNow 总是在实体中创建迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60758533/

相关文章:

c# - 如何断言一个方法只被调用一次?

c# - 在 ASP.NET MVC 中显示文本区域的新行

c# - Redis Server 失败,Socket 失败,超出输出缓冲区限制,我该如何增加限制?

c# - 如何抽象 Entity Framework 模型属性

linq - LINQ 中的 DATEDIFF(以月为单位)

entity-framework-4.1 - EF 4.1 Code First 数据库初始化 System.NullReferenceException 加载数据

c# - 锁定 child 的旋转,使其始终面朝下

c# - 使用 Entity Framework 枚举到字符串

c# - EF Code First 阻止使用 Fluent API 进行属性映射

c# - EF DbContext 和 Ninject