Итак, я хочу отслеживать последнее изменение, сделанное для любого из моих объектов, это последнее изменение сохраняется на «головном» объекте. Я нарисую его.Контекст объекта доступа в переопределении SaveChanges
У меня есть объект Project
, содержащий список Activities
, который, в свою очередь, имеет список Actions
, оба с различными свойствами и так далее. Project
имеет свойство LastUpdateDate
, на котором я хочу сохранить последнее обновление для любого свойства самого Project
или любого из его «подобъектов».
Для этого я переопределить SaveChanges
метод рамках объекта следующим образом:
public override int SaveChanges() {
var changedEntries = ChangeTracker.Entries();
if (changedEntries != null)
{
var dbEntityEntries = changedEntries as IList<DbEntityEntry> ?? changedEntries.ToList();
foreach (var entry in dbEntityEntries.Where(c => c.State != EntityState.Unchanged))
{
var proj = entry.Entity as Project;
if (proj != null)
{
proj.LastUpdateDate = DateTime.UtcNow;
}
var prop = entry.Entity as Activity;
if (prop != null)
{
var changedProject = dbEntityEntries.Single(x => (x.Entity is Project) && ((Project) x.Entity).Id == prop.ProjectId);
((Project) changedProject.Entity).LastUpdateDate = DateTime.UtcNow;
}
}
}
return base.SaveChanges();
}
Мой набор данных значителен и имеет больше свойств, чем в приведенном выше примере, для этого я не хочу быть пробегаем по каждому лицу, потому что это займет слишком много времени.
Вместо этого, я хотел бы получить доступ к моему ObjectContext
, так что я могу сказать, например: project[0].Activity[1]...
Кто-нибудь здесь есть какие-либо идеи о том, как достичь этой ситуации?
Вы хотите получить доступ к 'ObjectContext' из' метода ObjectContext' переопределить? Какие трудности у вас есть? – Dennis
Кажется, я не могу добраться до иерархии объектов. Только «записи», которые мне нужно передать конкретному типу, и таким образом мне нужно слишком много петлить. Поэтому я хотел бы, чтобы моя установка объекта была доступна как фактические объекты. – Tikkes
Что такое «настройка моего объекта»? Не могли бы вы обновить вопрос с помощью фрагмента псевдокода, который вы хотите получить? – Dennis