Exemplo n.º 1
0
        public void CloneConnectionDisposed()
        {
            var connection = new TestNoopConnection("");

            connection.Open();

            Assert.AreEqual(ConnectionState.Open, connection.State);

            TestNoopConnection?cloneConnection;

            using (var db = new DataConnection(new TestNoopProvider(), connection, false))
            {
                var c = db.Connection;
                Assert.AreEqual(ConnectionState.Open, c.State);

                using (var db2 = (DataConnection)db.Clone())
                {
                    cloneConnection = db2.Connection as TestNoopConnection;
                    Assert.NotNull(cloneConnection);
                    Assert.AreNotEqual(cloneConnection, connection);
                    Assert.AreEqual(ConnectionState.Open, cloneConnection !.State);
                }
            }

            Assert.AreEqual(ConnectionState.Open, connection.State);
            Assert.AreEqual(false, connection.IsDisposed);

            Assert.IsNotNull(cloneConnection);
            Assert.AreEqual(ConnectionState.Closed, cloneConnection.State);
            Assert.AreEqual(true, cloneConnection.IsDisposed);
        }
Exemplo n.º 2
0
 // see https://github.com/linq2db/linq2db.LINQPad/issues/10
 // we create separate connection for GetSchema calls to workaround provider bug
 // logic not applied if active transaction present - user must remove transaction if he has issues
 private TResult ExecuteOnNewConnection <TResult>(DataConnection dataConnection, Func <DataConnection, TResult> action)
 {
     if (dataConnection.Transaction != null)
     {
         return(action(dataConnection));
     }
     else
     {
         using (var newConnection = (DataConnection)dataConnection.Clone())
             return(action(newConnection));
     }
 }
Exemplo n.º 3
0
        public void CloneTest(string context)
        {
            using (var con = new DataConnection(context))
            {
                var dbName = con.Connection.Database;

                for (var i = 0; i < 150; i++)
                {
                    using (var clone = (DataConnection)con.Clone())
                        dbName = clone.Connection.Database;
                }
            }
        }