我有一个具有 ObjectContext 的对象。该对象的 OnSave 我正在使用该 ObjectContext 运行一个操作,如下所示:
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 中分离出来(这样它就可以在不经过所有延迟加载的对象的情况下变成二进制对象)。
变成二进制对象后,我创建了另一个保存二进制数据的对象(不同类型的)。我打电话this.ObjectContext.AddObject('TableName', myNewObject);
。
然后我在我之前分离的对象上调用它(entityState 是实体的先前状态):
if (entity.EntityState != entityState)
{
this.ObjectContext.AddObject(entity.GetType().Name, entity);
}
此时,代码从上面返回到 SaveChangesAction 方法。这些对象现在都不在我的 ObjectContext 中,因此它们都不会保存到我的数据库中。
我知道我已经通过修改影响它们的 ForEach 中的对象做了一些坏事,但是考虑到这是我需要在保存 ObjectContext 之前运行的代码,我不知道该怎么做。