مقداردهی خودکار Created Date و Updated Date برای تمام رکوردهای موجودیتهای یک پروژه توسط Entity Framework Core
نویسنده: علیرضا آرانی
تاریخ: ۱۴۰۱/۰۹/۲۲ ۱۵:۱۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
public class BaseEntity
{
public DateTimeOffset CreatedDate { get; set; }
public DateTimeOffset UpdatedDate { get; set; }
} //override because we need add created and updated date to some entities
public override async Task<int> SaveChangesAsync(
CancellationToken cancellationToken = default(CancellationToken))
{
AddCreatedUpdatedDate();
return (await base.SaveChangesAsync(true, cancellationToken));
}
//override because we need add created and updated date to some entities
public override int SaveChanges()
{
AddCreatedUpdatedDate();
return base.SaveChanges();
} /// <summary>
/// Add created and updated date to any entities that
/// inherit from BaseEntity class
/// </summary>
public void AddCreatedUpdatedDate()
{
var entries = ChangeTracker
.Entries()
.Where(e => e.Entity is BaseEntity && (
e.State == EntityState.Added
|| e.State == EntityState.Modified));
foreach (var entityEntry in entries)
{
((BaseEntity)entityEntry.Entity).UpdatedDate = DateTimeOffset.UtcNow;
if (entityEntry.State == EntityState.Added)
{
((BaseEntity)entityEntry.Entity).CreatedDate = DateTimeOffset.UtcNow;
}
}
} public class Student: BaseEntity
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public DateTimeOffset? DateOfBirth { get; set; }
public decimal Height { get; set; }
public float Weight { get; set; }
}