You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
EntityFrameworkCore.Jet/test/System.Data.Jet.Test/CreateNorthwindTest.cs

75 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Data.Common;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace System.Data.Jet.Test
{
[TestClass]
public class CreateNorthwindTest
{
private string _scriptPath;
private const string DatabaseName = "NorthwindEF7.accdb";
private DbConnection _connection;
[TestMethod]
public void CreateNorthwindTestRun()
{
JetConfiguration.ShowSqlStatements = false;
ExecuteScript();
JetConfiguration.ShowSqlStatements = true;
}
[TestInitialize]
public void Initialize()
{
_scriptPath = Path.Combine(Path.GetDirectoryName(this.GetType().Assembly.Location), "Northwind.sql");
JetConnection.DropDatabase(JetConnection.GetConnectionString(DatabaseName), false);
AdoxWrapper.CreateEmptyDatabase(JetConnection.GetConnectionString(DatabaseName));
_connection = new JetConnection(JetConnection.GetConnectionString(DatabaseName));
_connection.Open();
}
public void ExecuteScript()
{
var script = File.ReadAllText(_scriptPath);
foreach (var batch in
new Regex("^GO", RegexOptions.IgnoreCase | RegexOptions.Multiline, TimeSpan.FromMilliseconds(1000.0))
.Split(script).Where(b => !string.IsNullOrEmpty(b)))
{
DbCommand command = _connection.CreateCommand();
command.CommandText = batch;
try
{
command.ExecuteNonQuery();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine(batch);
throw;
}
}
}
[TestCleanup]
public void CleanUp()
{
_connection.Dispose();
}
}
}