1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- using System;
- using System.Configuration;
- using System.Data.SqlServerCe;
- using System.IO;
- using System.Linq;
- namespace PetaPoco.Tests.Integration.Databases.MSSQLCe
- {
- public class MssqlCeDBTestProvider : DBTestProvider
- {
- protected override string ConnectionName => "mssqlce";
- protected override string ScriptResourceName => "PetaPoco.Tests.Integration.Scripts.MSSQLCeBuildDatabase.sql";
- public MssqlCeDBTestProvider()
- {
- // Hack: Nuget package is old and dones't support newer content
- // ReSharper disable AssignNullToNotNullAttribute
- var codeBase = typeof(SqlCeConnection).Assembly.CodeBase;
- var uri = new UriBuilder(codeBase);
- var dllPath = Path.GetDirectoryName(Uri.UnescapeDataString(uri.Path));
- var nativeBinaryPath = Path.GetFullPath(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
- $".nuget\\packages\\microsoft.sqlserver.compact\\4.0.8876.1\\NativeBinaries\\{(Environment.Is64BitProcess ? "amd64" : "x86")}"));
- Directory.GetFiles(nativeBinaryPath, "*", SearchOption.AllDirectories).ToList().ForEach(f =>
- {
- var destFilePath = Path.Combine(dllPath, Path.GetFileName(f));
- if (!File.Exists(destFilePath))
- File.Copy(f, destFilePath);
- });
- // ReSharper restore AssignNullToNotNullAttribute
- }
- public override IDatabase Execute()
- {
- if (!File.Exists(Path.Combine(Environment.CurrentDirectory, "petapoco.sdf")))
- using (var engine = new SqlCeEngine(ConfigurationManager.ConnectionStrings["mssqlce"].ConnectionString))
- {
- engine.CreateDatabase();
- }
- return base.Execute();
- }
- public override void ExecuteBuildScript(IDatabase database, string script)
- {
- script.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).Select(s => s.Trim()).ToList().ForEach(s =>
- {
- if (s.StartsWith("--"))
- return;
- if (s.StartsWith("DROP"))
- {
- try
- {
- base.ExecuteBuildScript(database, s);
- }
- catch
- {
- }
- return;
- }
- base.ExecuteBuildScript(database, s);
- });
- }
- }
- }
|