From 885688f4c21ad26d75b98dd5e5989dd1433c4f93 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 16 Feb 2013 14:36:29 -0800 Subject: [PATCH] more dynamic binding to sqlce --- NzbDrone.Common/EnvironmentProvider.cs | 5 ----- NzbDrone.Core.Test/CentralDispatchFixture.cs | 8 +++---- NzbDrone.Core.Test/Framework/SqlCeTest.cs | 9 ++++---- NzbDrone.Core.Test/NzbDrone.Core.Test.csproj | 5 ++--- NzbDrone.Core/Datastore/ConnectionFactory.cs | 22 ++++++++++++-------- NzbDrone.Core/Datastore/MigrationsHelper.cs | 10 ++++----- NzbDrone.SqlCe/SqlCeProxy.cs | 6 +++--- 7 files changed, 30 insertions(+), 35 deletions(-) diff --git a/NzbDrone.Common/EnvironmentProvider.cs b/NzbDrone.Common/EnvironmentProvider.cs index 2e3346bf6..616819ab4 100644 --- a/NzbDrone.Common/EnvironmentProvider.cs +++ b/NzbDrone.Common/EnvironmentProvider.cs @@ -36,11 +36,6 @@ namespace NzbDrone.Common } } - public static bool IsMono - { - get { return Type.GetType("Mono.Runtime") != null; } - } - public static bool IsDebug { get diff --git a/NzbDrone.Core.Test/CentralDispatchFixture.cs b/NzbDrone.Core.Test/CentralDispatchFixture.cs index 9c3c0ff52..b2766df7a 100644 --- a/NzbDrone.Core.Test/CentralDispatchFixture.cs +++ b/NzbDrone.Core.Test/CentralDispatchFixture.cs @@ -5,7 +5,6 @@ using Autofac; using FluentAssertions; using NCrunch.Framework; using NUnit.Framework; -using NzbDrone.Common; using NzbDrone.Core.Jobs; using NzbDrone.Core.Providers; using NzbDrone.Core.Providers.ExternalNotification; @@ -29,10 +28,9 @@ namespace NzbDrone.Core.Test public CentralDispatchFixture() { - if (EnvironmentProvider.IsMono) - { - throw new IgnoreException("SqlCe is not supported"); - } +#if __MonoCS__ + throw new IgnoreException("SqlCe is not supported"); +#endif InitLogging(); var dispatch = new CentralDispatch(); diff --git a/NzbDrone.Core.Test/Framework/SqlCeTest.cs b/NzbDrone.Core.Test/Framework/SqlCeTest.cs index 18659548b..57c881f7e 100644 --- a/NzbDrone.Core.Test/Framework/SqlCeTest.cs +++ b/NzbDrone.Core.Test/Framework/SqlCeTest.cs @@ -1,7 +1,6 @@ using System; using System.IO; using NUnit.Framework; -using NzbDrone.Common; using NzbDrone.Core.Datastore; using NzbDrone.Core.Model.Notification; using NzbDrone.Core.Providers.Core; @@ -17,10 +16,10 @@ namespace NzbDrone.Core.Test.Framework [SetUp] public void CoreTestSetup() { - if (EnvironmentProvider.IsMono) - { - throw new IgnoreException("SqlCe is not supported in mono."); - } + +#if __MonoCS__ + throw new IgnoreException("SqlCe is not supported in mono."); +#endif if (NCrunch.Framework.NCrunchEnvironment.NCrunchIsResident()) { diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index 2a4408ee0..81b13e7ec 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -440,9 +440,8 @@ - if not exist "$(TargetDir)x86" md "$(TargetDir)x86" - -xcopy /s /y "$(SolutionDir)\SqlCe\*.*" "$(TargetDir)" + + if not exist "$(TargetDir)x86" md "$(TargetDir)x86" diff --git a/NzbDrone.Core/Datastore/ConnectionFactory.cs b/NzbDrone.Core/Datastore/ConnectionFactory.cs index a55bcef55..35a131ab2 100644 --- a/NzbDrone.Core/Datastore/ConnectionFactory.cs +++ b/NzbDrone.Core/Datastore/ConnectionFactory.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Configuration; using System.Data.Common; +using System.Data.OleDb; +using System.Data.SqlClient; using System.Reflection; using NLog; using NzbDrone.Common; @@ -19,19 +21,22 @@ namespace NzbDrone.Core.Datastore { Database.Mapper = new CustomeMapper(); - if (EnvironmentProvider.IsMono) return; + +#if __MonoCS__ +#else var dataSet = (System.Data.DataSet)ConfigurationManager.GetSection("system.data"); dataSet.Tables[0].Rows.Add("Microsoft SQL Server Compact Data Provider 4.0" - , "System.Data.SqlServerCe.4.0" - , ".NET Framework Data Provider for Microsoft SQL Server Compact" - , - "System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"); + , "System.Data.SqlServerCe.4.0" + , ".NET Framework Data Provider for Microsoft SQL Server Compact" + , "System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"); var proxyType = Assembly.Load("NzbDrone.SqlCe").GetExportedTypes()[0]; var instance = Activator.CreateInstance(proxyType); var factoryMethod = proxyType.GetMethod("GetSqlCeProviderFactory"); _factory = (DbProviderFactory)factoryMethod.Invoke(instance, null); +#endif + } @@ -78,10 +83,9 @@ namespace NzbDrone.Core.Datastore public static IDatabase GetPetaPocoDb(string connectionString, Boolean profiled = true) { - if (EnvironmentProvider.IsMono) - { - throw new NotSupportedException("SqlCe is not supported in mono"); - } +#if __MonoCS__ + throw new NotSupportedException("SqlCe is not supported in mono"); +#endif lock (initilized) { diff --git a/NzbDrone.Core/Datastore/MigrationsHelper.cs b/NzbDrone.Core/Datastore/MigrationsHelper.cs index 3d2086428..5d0c41f6f 100644 --- a/NzbDrone.Core/Datastore/MigrationsHelper.cs +++ b/NzbDrone.Core/Datastore/MigrationsHelper.cs @@ -1,5 +1,6 @@ using System.Linq; using System; +using System.IO; using System.Reflection; using NLog; @@ -27,7 +28,9 @@ namespace NzbDrone.Core.Datastore { migrator = new Migrator.Migrator("sqlserverce", connectionString, Assembly.GetAssembly(typeof(MigrationsHelper))); } - + + + migrator.MigrateToLastVersion(); logger.Info("Database migration completed"); @@ -42,10 +45,7 @@ namespace NzbDrone.Core.Datastore private static void EnsureDatabase(string constr) { - var proxyType = Assembly.Load("NzbDrone.SqlCe").GetExportedTypes()[0]; - var instance = Activator.CreateInstance(proxyType); - var factoryMethod = proxyType.GetMethod("EnsureDatabase"); - factoryMethod.Invoke(instance, new object[] { constr }); + } public static string GetIndexName(string tableName, params string[] columns) diff --git a/NzbDrone.SqlCe/SqlCeProxy.cs b/NzbDrone.SqlCe/SqlCeProxy.cs index 6577d8d97..fb405083a 100644 --- a/NzbDrone.SqlCe/SqlCeProxy.cs +++ b/NzbDrone.SqlCe/SqlCeProxy.cs @@ -6,13 +6,13 @@ namespace NzbDrone.SqlCe { public class SqlCeProxy { - public void EnsureDatabase(string connectionString) + public void EnsureDatabase(string constr) { - var connection = new SqlCeConnection(connectionString); + var connection = new SqlCeConnection(constr); if (!File.Exists(connection.Database)) { - var engine = new SqlCeEngine(connectionString); + var engine = new SqlCeEngine(constr); engine.CreateDatabase(); } }