![](/img/trans.png)
[英]How to change automatically assigned DateTime2 data type to DateTime with EF Core, Code First?
[英]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.