因此,我想跟蹤對我的任何對象所做的最後更改,這最後一個更改保存在「head」對象上。我會畫它。覆蓋訪問對象上下文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