Я переношу старый проект на ASP.NET 5 и Entity Framework 7. Я использовал первый подход базы данных (строительные леса DNX) для создания модели.Журнал аудита Entity Framework 7
старый проект основан на Entity Framework 4 и отслеживание аудита осуществляется путем переопределения SaveChanges
метод 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);
}
Мой вопрос, как я могу осуществить это в Entity Framework 7? Нужно ли мне сначала подходить коду?
EF7 далеко не закончен, а не готов к производству. Сначала я бы пошел на EF6 и DbContext API. В накопителе EF7 все еще много элементов, которые должны быть реализованы до того, как он достаточно зрелый. –
Мое понимание заключается в том, что вы можете реализовать его точно так же ... или хорошо в основном то же самое. – Seabizkit
Лично вы должны передать идентификатор пользователя в метод, а не ссылаться на System.Web на связанном с данными слое. – Seabizkit