在做修改操作(dto映射成实体类)时,我们可能不需要对某一个值类型字段进行修改操作, 根据这个问题,我总结了三个方法。
方法一:设置值类型允许为null
如:public int? AgeId{ get; set; }
方法二:设置那一列为计算列
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public int Age {get;set;}
方法三:重写SaveChange方法
public override Task<int> SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = new CancellationToken())
{
var entries = this.ChangeTracker.Entries().Where(r => r.State == EntityState.Modified);
foreach (var entry in entries)
{
if (entry.Entity is IHasCreationTime creationTime)
{
Entry(creationTime).Property(r => r.CreationTime).IsModified = false;
}
}
return base.SaveChangesAsync(acceptAllChangesOnSuccess, cancellationToken);
}
如果存在如何问题,请在评论区发表评论或者直接联系我,谢谢