public UnitOfWorkScope(bool saveAllChangesAtScopeEnd) { if (currentScope != null && !currentScope.isDisposed) { throw new InvalidOperationException("ObjectContextScope instances can not be nested."); } SaveAllChangesAtScopeEnd = saveAllChangesAtScopeEnd; objectContext = new GrassrootsContext(); isDisposed = false; // TODO: Come up with cleaner solution to partial trust security policy issues around setting Thread Affinity try { Thread.BeginThreadAffinity(); } catch { } currentScope = this; }
public void Dispose() { if (!isDisposed) { currentScope = null; // TODO: Come up with cleaner solution to partial trust security policy issues around setting Thread Affinity try { Thread.EndThreadAffinity(); } catch { } if (SaveAllChangesAtScopeEnd) { objectContext.SaveChanges(); } objectContext.Dispose(); isDisposed = true; } }