繁体   English   中英

更新时分配 EF Core DateTime

[英]EF Core DateTime being assigned on update

嗨,我有一个使用 EF Core 连接到我的应用程序的 MySQL 数据库我刚刚发现了一个我想修复的错误。 我可以看到我的 CreatedDateTime 列设置为更新为 UPDATE 上的当前时间戳,我不希望用户正在更新评论 CreatedDateTime 应该保持不变,但它更新为当前 DateTime 从而丢失其原始数据。

到目前为止我已经尝试过

 [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public DateTimeOffset CreatedDateTime { get; set; }

并且还尝试了我的配置实体

public class CommentEntityTypeConfiguration : IEntityTypeConfiguration<Comment>
{
    public void Configure(EntityTypeBuilder<Comment> builder)
    {
        builder.Property(x => x.CreatedDateTime).ValueGeneratedNever();
    }
}

我已经尝试在我的更新方法上将 CreatedDateTime 设置为自身,但似乎当前时间戳是在自动设置之后。

但这没有任何影响,因为它仍然设置为在每次更新调用时更新日期和时间,我可以手动编辑数据库,但如果可以的话,我想在 EF Core 中对其进行排序。

我的评论代码 model

public class Comment
{
    [Key]
    public int Id { get; set; }
    public string CommentText { get; set; }

    [ForeignKey("CreatedBy")]
    public int CreatedById { get; set; }

    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public DateTimeOffset CreatedDateTime { get; set; }
    public bool IsDeleted { get; set; }
    public DateTimeOffset? DeletedDateTime { get; set; }

    public virtual User CreatedBy { get; set; }

    public void Delete()
    {
        if (IsDeleted)
        {
            return;
        }

        IsDeleted = true;
        DeletedDateTime = DateTimeOffset.Now;
    }

    public void Restore()
    {
        IsDeleted = false;
        DeletedDateTime = null;
    }

    public void Update(string commentText, DateTimeOffset createdDateTime)
    {
        CommentText = commentText;
        CreatedDateTime = createdDateTime;
    }

    public Comment()
    {

    }

    public Comment(string comment, int createdById)
    {
        CommentText = comment;
        CreatedById = createdById;
        CreatedDateTime = DateTimeOffset.Now;
        IsDeleted = false;
    }
}

public class CommentEntityTypeConfiguration : IEntityTypeConfiguration<Comment>
{
    public void Configure(EntityTypeBuilder<Comment> builder)
    {
        builder.Property(x => x.CreatedDateTime).ValueGeneratedNever();
    }
}

数据库架构

谢谢您的任何帮助,非常感谢,因为我很想对这个错误进行排序。

您不需要任何特殊属性。 只需使 CreatedDateTime 可以为空:

 public DateTimeOffset? CreatedDateTime 

并检查您的数据库。 如果需要,也修复列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM