Пример #1
0
 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);
         }
     }
 }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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);
        }
Пример #4
0
 public virtual void DisposeTempObjectContext()
 {
     if (this._tempObjectContextCount <= 0 || (--this._tempObjectContextCount != 0 || this._tempObjectContext == null))
     {
         return;
     }
     this._tempObjectContext.Dispose();
     this._tempObjectContext = (ClonedObjectContext)null;
     this.ResetDbSets();
 }
Пример #5
0
 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);
        }
Пример #7
0
        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);
        }
Пример #8
0
        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());
        }
Пример #11
0
        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);
        }
Пример #12
0
 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);
 }
Пример #13
0
        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);
        }
Пример #14
0
 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);
 }
Пример #15
0
        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);
        }
Пример #17
0
 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);
        }