Ejemplo n.º 1
0
        public void ExecuteQuery_SqlQuery_ExecutesQueryWithExpectedResults()
        {
            var providerName = "System.Data.SqlClient";

#if !NET472
            if (DbProviderFactories.GetProviderInvariantNames().Any(s => string.Equals(s, providerName, StringComparison.Ordinal)) == false)
            {
                Trace.WriteLine($"Registering {providerName} factory");
                DbProviderFactories.RegisterFactory(providerName, SqlClientFactory.Instance);
            }
#endif
            var connectionString   = ConfigurationRoot.GetConnectionString("MasterDatabase");
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var repositoryAdapter  = new TransactSqlAdapter(definitionProvider);

            using (var target = new DatabaseContext(connectionString, providerName, repositoryAdapter))
            {
                var tables = target.Query <dynamic>("SELECT * FROM sys.tables WHERE [type] = @0", 'U').ToList();
                Assert.IsTrue(tables.Any());
                Assert.IsNotNull(tables.FirstOrDefault()?.name);
                Assert.IsTrue(tables.FirstOrDefault()?.object_id > 0);

                var tableCount = target.ExecuteScalar <int>("SELECT COUNT(1) FROM sys.tables WHERE [type] = @0", 'U');
                Assert.AreNotEqual(0, tableCount);
            }
        }
Ejemplo n.º 2
0
        public void ExecuteNonQuery_SqlCommand_ExecutesNonQuery()
        {
            var providerName = "System.Data.SqlClient";

#if !NET472
            if (DbProviderFactories.GetProviderInvariantNames().Any(s => string.Equals(s, providerName, StringComparison.Ordinal)) == false)
            {
                Trace.WriteLine($"Registering {providerName} factory");
                DbProviderFactories.RegisterFactory(providerName, SqlClientFactory.Instance);
            }
#endif
            var connectionString   = ConfigurationRoot.GetConnectionString("MasterDatabase");
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var statementCompiler  = new TransactSqlAdapter(definitionProvider);

            using (var target = new DatabaseContext(connectionString, providerName, statementCompiler))
            {
                target.OpenSharedConnection();
                var sqlConnection = target.Connection as SqlConnection;

                Assert.IsNotNull(sqlConnection);

                using (var transaction = sqlConnection.BeginTransaction())
                {
                    using (var command = new SqlCommand("SELECT TOP 1 * FROM sys.tables", sqlConnection, transaction))
                    {
                        command.ExecuteNonQuery();
                    }

                    transaction.Rollback();
                }
            }
        }
Ejemplo n.º 3
0
        public void GetValueMapper_TransactSqlAdapterForDecimalMoney_ReturnsIValueMapper()
        {
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var statementCompiler  = new TransactSqlAdapter(definitionProvider);

            using (var connection = new SqlConnection(ConfigurationRoot.GetConnectionString("MasterDatabase")))
                using (var database = new DatabaseContext(connection, statementCompiler))
                {
                    var actual = database.GetValueMapper(typeof(decimal), typeof(SqlMoney));
                    Assert.IsNotNull(actual);
                }
        }
Ejemplo n.º 4
0
        public void Database_ChangeDatabase_DatabaseChanged()
        {
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var statementCompiler  = new TransactSqlAdapter(definitionProvider);

            using (var connection = new SqlConnection(ConfigurationRoot.GetConnectionString("MasterDatabase")))
                using (var database = new DatabaseContext(connection, statementCompiler))
                {
                    database.ChangeDatabase("master");
                    Assert.AreEqual("master", database.Connection.Database);
                }
        }
Ejemplo n.º 5
0
        public async Task OpenSharedConnectionAsync_SqlConnection_ConnectionOpened()
        {
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var statementCompiler  = new TransactSqlAdapter(definitionProvider);

            await using (var connection = new SqlConnection(ConfigurationRoot.GetConnectionString("MasterDatabase")))
                await using (var database = new DatabaseContext(connection, statementCompiler))
                {
                    var cancellationToken = CancellationToken.None;
                    await database.OpenSharedConnectionAsync(cancellationToken);

                    await database.ChangeDatabaseAsync("master", cancellationToken);

                    Assert.AreEqual("master", database.Connection.Database);
                }
        }
Ejemplo n.º 6
0
        public void BeginTransaction_ExplicitIsolationLevel_IsolationLevelMatchesExpected()
        {
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var statementCompiler  = new TransactSqlAdapter(definitionProvider);

            using (var connection = new SqlConnection(ConfigurationRoot.GetConnectionString("MasterDatabase")))
                using (var database = new DatabaseContext(connection, statementCompiler))
                {
                    database.OpenSharedConnection();

                    using (var transaction = database.BeginTransaction(IsolationLevel.RepeatableRead))
                    {
                        Assert.IsFalse(transaction.IsDisposed);
                        Assert.AreEqual(IsolationLevel.RepeatableRead, transaction.IsolationLevel);
                    }
                }
        }
        public async Task Create_TableValuedParameterCommand_CommandPropertiesMatchExpected()
        {
            var adapter = new TransactSqlAdapter(new DataAnnotationsDefinitionProvider());

            using (var context = new DatabaseContext(ConfigurationRoot.GetConnectionString("OrmTestDb"), SqlClientFactory.Instance, adapter))
            {
                await context.OpenSharedConnectionAsync(CancellationToken.None);

                var target = new TableValuedParameterCommandFactory();
                var actual = target.Create(context, "Select * FROM Table", "DependentRowTable", new List <DependentRow>());
                Assert.IsInstanceOfType(actual, typeof(SqlCommand));
                Assert.AreEqual("Select * FROM Table", actual.CommandText);
                var actualParameter = actual.Parameters["@DependentRowTable"] as SqlParameter;
                Assert.IsNotNull(actualParameter);
                Assert.AreEqual(SqlDbType.Structured, actualParameter.SqlDbType);
            }
        }
Ejemplo n.º 8
0
        public void AssociateTransaction_SqlCommand_CommandTransactionIsSameAsExpected()
        {
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var statementCompiler  = new TransactSqlAdapter(definitionProvider);

            using (var connection = new SqlConnection(ConfigurationRoot.GetConnectionString("MasterDatabase")))
                using (var database = new DatabaseContext(connection, statementCompiler))
                {
                    database.OpenSharedConnection();
                    var command = new SqlCommand("SELECT * FROM sys.tables WHERE [type] = @0");

                    using (var transaction = database.BeginTransaction(IsolationLevel.RepeatableRead))
                    {
                        database.AssociateTransaction(command);
                        Assert.IsNotNull(command.Transaction);
                    }
                }
        }
Ejemplo n.º 9
0
        public async Task BeginTransactionAsync_ExplicitIsolationLevel_IsolationLevelMatchesExpected()
        {
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var statementCompiler  = new TransactSqlAdapter(definitionProvider);

            await using (var connection = new SqlConnection(ConfigurationRoot.GetConnectionString("MasterDatabase")))
                await using (var database = new DatabaseContext(connection, statementCompiler))
                {
                    var cancellationToken = CancellationToken.None;
                    await database.OpenSharedConnectionAsync(cancellationToken);

                    await using (var transaction = await database.BeginTransactionAsync(IsolationLevel.RepeatableRead, CancellationToken.None))
                    {
                        Assert.IsFalse(transaction.IsDisposed);
                        Assert.AreEqual(IsolationLevel.RepeatableRead, transaction.IsolationLevel);
                    }
                }
        }
Ejemplo n.º 10
0
        public async Task QueryAsync_SqlQuery_ExecutesQueryWithExpectedResults()
        {
            const string ProviderName = "System.Data.SqlClient";

#if !NET472
            if (DbProviderFactories.GetProviderInvariantNames().Any(s => string.Equals(s, ProviderName, StringComparison.Ordinal)) == false)
            {
                Trace.WriteLine($"Registering {ProviderName} factory");
                DbProviderFactories.RegisterFactory(ProviderName, SqlClientFactory.Instance);
            }
#endif
            var connectionString   = ConfigurationRoot.GetConnectionString("MasterDatabase");
            var definitionProvider = new DataAnnotationsDefinitionProvider();
            var repositoryAdapter  = new TransactSqlAdapter(definitionProvider);

            await using (var target = new DatabaseContext(connectionString, ProviderName, repositoryAdapter))
            {
                var tables = target.QueryAsync <dynamic>("SELECT * FROM sys.tables WHERE [type] = @0", CancellationToken.None, 'U');
                var count  = 0;

                await foreach (var table in tables)
                {
                    Assert.IsNotNull(table.name);
                    Assert.IsTrue(table.object_id > 0);
                    count++;
                }

                Assert.AreNotEqual(0, count);

                var tableCount = await target.ExecuteScalarAsync <int>(
                    "SELECT COUNT(1) FROM sys.tables WHERE [type] = @0",
                    CancellationToken.None,
                    'U');

                Assert.AreNotEqual(0, tableCount);
            }
        }