मुझे पता है कि मुझे पार्टी में थोड़ी देर हो गई है, लेकिन मैंने इसे एक प्रोजेक्ट के लिए हल किया है जिस पर मैं काम कर रहा हूं और सोचा कि मैं अपना समाधान साझा करूंगा।
सबसे पहले, समाधान को और अधिक पुन:उपयोग करने योग्य बनाने के लिए, मैंने टाइमस्टैम्प गुणों के साथ एक आधार वर्ग बनाया:
public class EntityBase
{
public DateTime? CreatedDate { get; set; }
public DateTime? LastModifiedDate { get; set; }
}
फिर मैं अपने DbContext पर SaveChanges विधि को ओवरराइड करता हूं:
public class MyContext : DbContext
{
public override int SaveChanges()
{
ObjectContext context = ((IObjectContextAdapter)this).ObjectContext;
//Find all Entities that are Added/Modified that inherit from my EntityBase
IEnumerable<ObjectStateEntry> objectStateEntries =
from e in context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified)
where
e.IsRelationship == false &&
e.Entity != null &&
typeof(EntityBase).IsAssignableFrom(e.Entity.GetType())
select e;
var currentTime = DateTime.Now;
foreach (var entry in objectStateEntries)
{
var entityBase = entry.Entity as EntityBase;
if (entry.State == EntityState.Added)
{
entityBase.CreatedDate = currentTime;
}
entityBase.LastModifiedDate = currentTime;
}
return base.SaveChanges();
}
}