Sto trasferendo un vecchio progetto su ASP.NET 5 e Entity Framework 7. Ho utilizzato il primo approccio del database (scaffold DNX) per creare il modello.Registro di controllo di Entity Framework 7
Il vecchio progetto si basa su Entity Framework 4 e il monitoraggio di controllo è implementata tramite l'override del metodo SaveChanges
del DbContext
:
public override int SaveChanges(System.Data.Objects.SaveOptions options)
{
int? UserId = null;
if (System.Web.HttpContext.Current != null)
UserId = (from user in Users.Where(u => u.UserName == System.Web.HttpContext.Current.User.Identity.Name) select user.Id).SingleOrDefault();
foreach (ObjectStateEntry entry in ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified))
{
Type EntityType = entry.Entity.GetType();
PropertyInfo pCreated = EntityType.GetProperty("Created");
PropertyInfo pCreatedById = EntityType.GetProperty("CreatedById");
PropertyInfo pModified = EntityType.GetProperty("Modified");
PropertyInfo pModifiedById = EntityType.GetProperty("ModifiedById");
if (entry.State == EntityState.Added)
{
if (pCreated != null)
pCreated.SetValue(entry.Entity, DateTime.Now, new object[0]);
if (pCreatedById != null && UserId != null)
pCreatedById.SetValue(entry.Entity, UserId, new object[0]);
}
if (pModified != null)
pModified.SetValue(entry.Entity, DateTime.Now, new object[0]);
if (pModifiedById != null && UserId != null)
pModifiedById.SetValue(entry.Entity, UserId, new object[0]);
}
}
return base.SaveChanges(options);
}
La mia domanda è: come posso implementare questo in Entity Framework 7? Devo prendere il primo approccio del codice?
EF7 è lungi dall'essere finito e non pronto per la produzione. Prenderò prima le API EF6 e DbContext. Ci sono ancora molti articoli sul backlog EF7 che devono essere implementati prima che siano abbastanza maturi. –
La mia comprensione è che si potrebbe implementarlo esattamente allo stesso modo ... o sostanzialmente lo stesso. – Seabizkit
Personalmente dovresti passare l'id utente in un metodo, piuttosto che fare riferimento a System.Web in un livello correlato ai dati. – Seabizkit