Ich übte User.Identity und Zeitstempel Funktionen in ASP.NET MVC 5, Also habe ich eine Schülerklasse erstellt einige Eigenschaften gefüllt, wollte ich nur testen, ob es Zeitstempel und userId, so Benutzer erfasst id wird auch erfasst und datetime, Problem ist, wenn ich einen Datensatz bearbeite und es speichere, sein erstelltes Datum wird Null und das geänderte Datum wird aktualisiert, bitte überprüfe den Code und helfe. Vielen Dank im Voraus. ist Sie den Code untenErstellt und geändertes Datum Ausgabe
{
public class BaseEntity
{
public DateTime? DateCreated { get; set; }
public string UserCreated { get; set; }
public DateTime? DateModified { get; set; }
public string UserModified { get; set; }
}
public class Student : BaseEntity
{
public int Id { get; set; }
public string Name { get; set; }
public string Subject { get; set; }
public string Class { get; set; }
public Section Section { get; set; }
public byte SectionId { get; set; }
}
dann habe ich Codefirst Ansatz und erstellt eine Anwendung Datenbank und hinzugefügt diesen Code in Identity Modell
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public DbSet<Student> Students { get; set; }
public override int SaveChanges()
{
AddTimestamps();
return base.SaveChanges();
}
//public override async Task<int> SaveChangesAsync()
//{
// AddTimestamps();
// return await base.SaveChangesAsync();
//}
private void AddTimestamps()
{
var entities = ChangeTracker.Entries().Where(x => x.Entity is BaseEntity && (x.State == EntityState.Added || x.State == EntityState.Modified));
var currentUsername = !string.IsNullOrEmpty(System.Web.HttpContext.Current?.User?.Identity?.Name)
? HttpContext.Current.User.Identity.Name
: "Anonymous";
foreach (var entity in entities)
{
if (entity.State == EntityState.Added)
{
((BaseEntity)entity.Entity).DateCreated = DateTime.UtcNow;
((BaseEntity)entity.Entity).UserCreated = currentUsername;
}
else
((BaseEntity)entity.Entity).DateModified = DateTime.UtcNow;
((BaseEntity)entity.Entity).UserModified = currentUsername;
}
}
public DbSet<Section> Sections { get; set; }
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
ich einen einfachen Controller erstellt haben mit erstellen, bearbeiten und dispay Aktionen.
Ich kann nicht sehen, wie 'DateCreated' von diesem Code auf null gesetzt würde. Es muss irgendwo anders passieren - vielleicht in der Modellbindung. – jpishko
Welcher Code muss überprüft werden? Ich bin total ahnungslos, was schief gelaufen ist: | –