Eski bir projeyi ASP.NET 5 ve Entity Framework 7'ye taşıyorum. Modeli oluşturmak için veritabanını ilk yaklaşım (DNX scaffold) kullandım. Entity Framework 7 denetim günlüğü
eski proje
İdare Framework 4 dayalıdır ve denetim izlemeDbContext
ait
SaveChanges
yöntemini geçersiz kılarak uygulanır:
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);
}
Sorum, nasıl Entity Framework 7'de bu uygulayabilirsiniz nedir? İlk yaklaşımı benim almalı mıyım? Bu şu anda EF 6'da bunu yoludur
ve hala öyle:
ChangeTracker API kullanarak (EF 6+):
EF7 bitmiş ve üretime hazır değil. İlk önce EF6 ve DbContext API'ye giderdim. EF7 bekleme listesinde hala yeterince olgunlaşmadan önce uygulanması gereken birçok öğe var. –
Anlayışım, onu aynı şekilde ... veya temelde aynı şekilde uygulayabilmenizdir. – Seabizkit
Şahsen, veriyi ilgili katmanda System.Web'e başvurmak yerine, kullanıcı kimliğini bir yönteme iletmelisiniz. – Seabizkit