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); } }
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(); } } }
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); } }
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); } }
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); } }
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); } }
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); } } }
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); } } }
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); } }