0
我有一個ObjectContext的對象。的OnSave該對象的我正在使用的ObjectContext像這樣的動作:Entity Framework關於保存時間的問題
public void SaveChangesAction(ObjectContext context)
{
// Validate the state of each entity in the context
// before SaveChanges can succeed.
foreach (ObjectStateEntry entry in
context.ObjectStateManager.GetObjectStateEntries(
EntityState.Added | EntityState.Modified))
{
var type = entry.Entity.GetType();
var RepoBase = typeof(RepositoryBase<myEntityFrameworkObject>);
MethodInfo mi = RepoBase.GetMethod("GenerateLog");
MethodInfo constructed = mi.MakeGenericMethod(type);
constructed.Invoke(this, new object[] { entry.Entity });
}
}
在我的「GenerateLog」方法,我把我的實體,然後從ObjectContext中卸下它(這樣它可以變成一個二進制對象而無需通過所有Lazy Loaded對象)。
轉換成二進制對象後,我創建了另一個保存二進制數據的對象(不同類型)。我打電話給this.ObjectContext.AddObject('TableName', myNewObject);
。
然後我把這個我的對象我先前分離(entityState是實體的前一個狀態):
if (entity.EntityState != entityState)
{
this.ObjectContext.AddObject(entity.GetType().Name, entity);
}
在這一點上,代碼追溯到SaveChangesAction方法從上面。這兩個對象都不在我的ObjectContext中,因此它們都不會保存到我的數據庫中。
據我所知,我已經做了一些不好的事情,修改了影響它們的ForEach內部的對象,但我不知道該怎麼做,因爲這是我需要在我的ObjectContext保存之前運行的代碼。
1)我的一個要求是當我們的EntityFramework改變時我們不需要改變代碼。我們目前有幾百個可以調用這些代碼的對象。至於所有的分離,我同意這是一個問題,這就是爲什麼我提出這個問題,因爲我不明白什麼是可以自己解決的。 – 2011-05-28 23:35:29