public DatabaseExistenceState AnyModelTableExists( InternalContext internalContext) { if (!internalContext.DatabaseOperations.Exists(internalContext.Connection, internalContext.CommandTimeout, new Lazy <StoreItemCollection>((Func <StoreItemCollection>)(() => DatabaseTableChecker.CreateStoreItemCollection(internalContext))))) { return(DatabaseExistenceState.DoesNotExist); } using (ClonedObjectContext contextForDdlOps = internalContext.CreateObjectContextForDdlOps()) { try { if (internalContext.CodeFirstModel == null) { return(DatabaseExistenceState.Exists); } TableExistenceChecker service = DbConfiguration.DependencyResolver.GetService <TableExistenceChecker>((object)internalContext.ProviderName); if (service == null) { return(DatabaseExistenceState.Exists); } List <EntitySet> list = this.GetModelTables(internalContext).ToList <EntitySet>(); if (!list.Any <EntitySet>() || this.QueryForTableExistence(service, contextForDdlOps, list)) { return(DatabaseExistenceState.Exists); } return(internalContext.HasHistoryTableEntry() ? DatabaseExistenceState.Exists : DatabaseExistenceState.ExistsConsideredEmpty); } catch (Exception ex) { return(DatabaseExistenceState.Exists); } } }
public void ClonedObjectContext_disposes_of_connections_in_correct_order() { var myConnectionInterceptor = new ConnectionDisposingInterceptor(); DbInterception.Add(myConnectionInterceptor); try { var mockClonedContext = new Mock <ObjectContextProxy>(); var storeConnection = new SqlConnection(); var mockEntityConnection = new Mock <EntityConnectionProxy>(); mockEntityConnection.Setup(m => m.StoreConnection).Returns(storeConnection); mockEntityConnection.Setup(m => m.CreateNew(It.IsAny <SqlConnection>())).Returns <SqlConnection>( c => { var mockClonedConnection = new Mock <EntityConnectionProxy>(); mockClonedConnection.Setup(cc => cc.StoreConnection).Returns(c); mockClonedConnection.Setup(m => m.Dispose()).Callback(() => myConnectionInterceptor.IsClonedEntityConnectionDisposed = true); return(mockClonedConnection.Object); }); var mockContext = CreateMockObjectContext(mockEntityConnection, mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, null, "Database=PinkyDinkyDo"); clonedContext.Dispose(); } finally { DbInterception.Remove(myConnectionInterceptor); } }
public void Cloning_an_ObjectContext_with_a_null_default_container_name_results_in_a_clone_without_a_default_container_name() { var mockClonedContext = new Mock <ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, "Database=PinkyDinkyDo"); mockClonedContext.VerifySet(m => m.DefaultContainerName = It.IsAny <string>(), Times.Never()); Assert.Null(clonedContext.ObjectContext.DefaultContainerName); }
public virtual void DisposeTempObjectContext() { if (this._tempObjectContextCount <= 0 || (--this._tempObjectContextCount != 0 || this._tempObjectContext == null)) { return; } this._tempObjectContext.Dispose(); this._tempObjectContext = (ClonedObjectContext)null; this.ResetDbSets(); }
public virtual void UseTempObjectContext() { ++this._tempObjectContextCount; if (this._tempObjectContext != null) { return; } this._tempObjectContext = new ClonedObjectContext(new ObjectContextProxy(this.GetObjectContextWithoutDatabaseInitialization()), this.Connection, this.OriginalConnectionString, true); this.ResetDbSets(); }
public void Cloning_an_ObjectContext_with_a_null_default_container_name_results_in_a_clone_without_a_default_container_name() { var mockClonedContext = new Mock<ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, null, "Database=PinkyDinkyDo"); mockClonedContext.VerifySet(m => m.DefaultContainerName = It.IsAny<string>(), Times.Never()); Assert.Null(clonedContext.ObjectContext.DefaultContainerName); }
public void ClonedObjectContext_ObjectContext_returns_the_cloned_ObjectContext() { var mockClonedContext = new Mock <ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, "Database=PinkyDinkyDo"); mockContext.Verify(m => m.CreateNew(It.IsAny <EntityConnectionProxy>())); Assert.Same(mockClonedContext.Object, clonedContext.ObjectContext); }
public void ClonedObjectContext_Connection_returns_the_cloned_store_connection() { var storeConnection = new SqlConnection(); var mockContext = CreateMockObjectContext(CreateMockConnection(storeConnection)); var clonedConnection = new ClonedObjectContext(mockContext.Object, "Database=PinkyDinkyDo").Connection; Assert.NotSame(storeConnection, clonedConnection); Assert.Equal("Database=PinkyDinkyDo", clonedConnection.ConnectionString); Assert.Same(storeConnection.GetType(), clonedConnection.GetType()); }
public void Cloning_an_ObjectContext_with_a_default_container_name_copies_that_container_name() { var mockClonedContext = new Mock<ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); mockContext.Setup(m => m.DefaultContainerName).Returns("Kipper"); var clonedContext = new ClonedObjectContext(mockContext.Object, null, "Database=PinkyDinkyDo"); mockClonedContext.VerifySet(m => m.DefaultContainerName = It.IsAny<string>()); Assert.Equal("Kipper", clonedContext.ObjectContext.DefaultContainerName); }
public void ClonedObjectContext_Connection_returns_the_cloned_store_connection() { var storeConnection = new SqlConnection(); var mockContext = CreateMockObjectContext(CreateMockConnection(storeConnection)); var clonedConnection = new ClonedObjectContext(mockContext.Object, null, "Database=PinkyDinkyDo").Connection; Assert.NotSame(storeConnection, clonedConnection); Assert.Equal("Database=PinkyDinkyDo", clonedConnection.ConnectionString); Assert.Same(storeConnection.GetType(), clonedConnection.GetType()); }
public void Cloning_an_ObjectContext_with_a_default_container_name_copies_that_container_name() { var mockClonedContext = new Mock <ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); mockContext.Setup(m => m.DefaultContainerName).Returns("Kipper"); var clonedContext = new ClonedObjectContext(mockContext.Object, "Database=PinkyDinkyDo"); mockClonedContext.VerifySet(m => m.DefaultContainerName = It.IsAny <string>()); Assert.Equal("Kipper", clonedContext.ObjectContext.DefaultContainerName); }
public virtual bool QueryForTableExistence( TableExistenceChecker checker, ClonedObjectContext clonedObjectContext, List <EntitySet> modelTables) { using (new TransactionScope(TransactionScopeOption.Suppress)) { if (checker.AnyModelTableExistsInDatabase((ObjectContext)clonedObjectContext.ObjectContext, clonedObjectContext.Connection, (IEnumerable <EntitySet>)modelTables, "EdmMetadata")) { return(true); } } return(false); }
public void Disposing_a_cloned_ObjectContext_disposes_both_the_context_and_the_connection() { var mockClonedContext = new Mock <ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, "Database=PinkyDinkyDo"); var connectionIsDisposed = false; clonedContext.Connection.Disposed += (_, __) => connectionIsDisposed = true; clonedContext.Dispose(); mockClonedContext.Verify(m => m.Dispose()); Assert.True(connectionIsDisposed); }
public virtual bool QueryForTableExistence( IPseudoProvider provider, ClonedObjectContext clonedObjectContext, List <EntitySet> modelTables) { using (new TransactionScope(TransactionScopeOption.Suppress)) { if (provider.AnyModelTableExistsInDatabase( clonedObjectContext.ObjectContext, clonedObjectContext.Connection, modelTables, EdmMetadataContext.TableName)) { return(true); } } return(false); }
public void Calling_Dispose_on_an_already_disposed_cloned_ObjectContext_does_nothing() { var mockClonedContext = new Mock <ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, "Database=PinkyDinkyDo"); var connectionIsDisposed = false; clonedContext.Connection.Disposed += (_, __) => connectionIsDisposed = true; clonedContext.Dispose(); connectionIsDisposed = false; clonedContext.Dispose(); mockClonedContext.Verify(m => m.Dispose(), Times.Once()); Assert.False(connectionIsDisposed); }
public void ClonedObjectContext_ObjectContext_returns_the_cloned_ObjectContext() { var mockClonedContext = new Mock<ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, null, "Database=PinkyDinkyDo"); mockContext.Verify(m => m.CreateNew(It.IsAny<EntityConnectionProxy>())); Assert.Same(mockClonedContext.Object, clonedContext.ObjectContext); }
private static StoreItemCollection CreateStoreItemCollection( InternalContext internalContext) { using (ClonedObjectContext contextForDdlOps = internalContext.CreateObjectContextForDdlOps()) return((StoreItemCollection)(EntityConnection)contextForDdlOps.ObjectContext.Connection.GetMetadataWorkspace().GetItemCollection(DataSpace.SSpace)); }
public virtual bool QueryForTableExistence( TableExistenceChecker checker, ClonedObjectContext clonedObjectContext, List<EntitySet> modelTables) { using (new TransactionScope(TransactionScopeOption.Suppress)) { if (checker.AnyModelTableExistsInDatabase( clonedObjectContext.ObjectContext, clonedObjectContext.Connection, modelTables, EdmMetadataContext.TableName)) { return true; } } return false; }
public void ClonedObjectContext_disposes_of_connections_in_correct_order() { var myConnectionInterceptor = new ConnectionDisposingInterceptor(); DbInterception.Add(myConnectionInterceptor); try { var mockClonedContext = new Mock<ObjectContextProxy>(); var storeConnection = new SqlConnection(); var mockEntityConnection = new Mock<EntityConnectionProxy>(); mockEntityConnection.Setup(m => m.StoreConnection).Returns(storeConnection); mockEntityConnection.Setup(m => m.CreateNew(It.IsAny<SqlConnection>())).Returns<SqlConnection>( c => { var mockClonedConnection = new Mock<EntityConnectionProxy>(); mockClonedConnection.Setup(cc => cc.StoreConnection).Returns(c); mockClonedConnection.Setup(m => m.Dispose()).Callback(() => myConnectionInterceptor.IsClonedEntityConnectionDisposed = true); return mockClonedConnection.Object; }); var mockContext = CreateMockObjectContext(mockEntityConnection, mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, null, "Database=PinkyDinkyDo"); clonedContext.Dispose(); } finally { DbInterception.Remove(myConnectionInterceptor); } }
public void Calling_Dispose_on_an_already_disposed_cloned_ObjectContext_does_nothing() { var mockClonedContext = new Mock<ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, null, "Database=PinkyDinkyDo"); var connectionIsDisposed = false; clonedContext.Connection.Disposed += (_, __) => connectionIsDisposed = true; clonedContext.Dispose(); connectionIsDisposed = false; clonedContext.Dispose(); mockClonedContext.Verify(m => m.Dispose(), Times.Once()); Assert.False(connectionIsDisposed); }
public void Disposing_a_cloned_ObjectContext_disposes_both_the_context_and_the_connection() { var mockClonedContext = new Mock<ObjectContextProxy>(); var mockContext = CreateMockObjectContext(CreateMockConnection(), mockClonedContext); var clonedContext = new ClonedObjectContext(mockContext.Object, null, "Database=PinkyDinkyDo"); var connectionIsDisposed = false; clonedContext.Connection.Disposed += (_, __) => connectionIsDisposed = true; clonedContext.Dispose(); mockClonedContext.Verify(m => m.Dispose()); Assert.True(connectionIsDisposed); }