diff --git a/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj b/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj index 28deec8b0..a59a0d77f 100644 --- a/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj +++ b/src/Orchard.Core.Tests/Orchard.Core.Tests.csproj @@ -79,10 +79,9 @@ 3.5 - + False - ..\..\lib\sqlite\System.Data.SQLite.DLL - True + ..\..\lib\sqlce\System.Data.SqlServerCe.dll @@ -149,7 +148,16 @@ Other similar extension points exist, see Microsoft.Common.targets. - - --> + + + + + + + + + + + \ No newline at end of file diff --git a/src/Orchard.Profile/profiling-setup-commands.txt b/src/Orchard.Profile/profiling-setup-commands.txt index f839517bc..674aa40a3 100644 --- a/src/Orchard.Profile/profiling-setup-commands.txt +++ b/src/Orchard.Profile/profiling-setup-commands.txt @@ -1,3 +1,3 @@ -setup /SiteName:Profiling /AdminUsername:admin /AdminPassword:profiling-secret /DatabaseProvider:SQLite /EnabledFeatures:Orchard.Framework,Common,Dashboard,Feeds,HomePage,Navigation,Scheduling,Settings,XmlRpc,Orchard.Users,Orchard.Roles,TinyMce,Orchard.Modules,Orchard.Themes,Orchard.MultiTenancy,Orchard.Pages,Orchard.Blogs,Orchard.Comments,Futures.Widgets,Orchard.Media,Orchard.Tags,Orchard.DevTools +setup /SiteName:Profiling /AdminUsername:admin /AdminPassword:profiling-secret /DatabaseProvider:SqlCe /EnabledFeatures:Orchard.Framework,Common,Dashboard,Feeds,HomePage,Navigation,Scheduling,Settings,XmlRpc,Orchard.Users,Orchard.Roles,TinyMce,Orchard.Modules,Orchard.Themes,Orchard.MultiTenancy,Orchard.Pages,Orchard.Blogs,Orchard.Comments,Futures.Widgets,Orchard.Media,Orchard.Tags,Orchard.DevTools add profiling data feature disable Orchard.DevTools diff --git a/src/Orchard.Specs/Hosting/TraceEnabledDataServicesProviderFactory.cs b/src/Orchard.Specs/Hosting/TraceEnabledDataServicesProviderFactory.cs index 76e3a8e8f..853a3a33d 100644 --- a/src/Orchard.Specs/Hosting/TraceEnabledDataServicesProviderFactory.cs +++ b/src/Orchard.Specs/Hosting/TraceEnabledDataServicesProviderFactory.cs @@ -9,11 +9,11 @@ namespace Orchard.Specs.Hosting { return new TraceEnabledBuilder(sessionFactoryParameters.DataFolder, sessionFactoryParameters.ConnectionString); } - class TraceEnabledBuilder : SQLiteDataServicesProvider { + class TraceEnabledBuilder : SqlCeDataServicesProvider { public TraceEnabledBuilder(string dataFolder, string connectionString) : base(dataFolder, connectionString) { } public override IPersistenceConfigurer GetPersistenceConfigurer(bool createDatabase) { - var config = (SQLiteConfiguration)base.GetPersistenceConfigurer(createDatabase); + var config = (MsSqlCeConfiguration)base.GetPersistenceConfigurer(createDatabase); //config.ShowSql(); return config; } diff --git a/src/Orchard.Specs/MultiTenancy.feature b/src/Orchard.Specs/MultiTenancy.feature index b6cabfd97..86047ad79 100644 --- a/src/Orchard.Specs/MultiTenancy.feature +++ b/src/Orchard.Specs/MultiTenancy.feature @@ -64,13 +64,13 @@ Scenario: A new tenant with preconfigured database goes to the setup screen | name | value | | Name | Scott | | RequestUrlHost | scott.example.org | - | DataProvider | SQLite | + | DataProvider | SqlCe | And I hit "Save" And I am redirected And I go to "/Setup" on host scott.example.org Then I should see "Welcome to Orchard" And I should see "Finish Setup" - And I should not see "SQLite" + And I should not see "SQL Server Compact" And the status should be 200 OK Scenario: A new tenant runs the setup diff --git a/src/Orchard.Specs/MultiTenancy.feature.cs b/src/Orchard.Specs/MultiTenancy.feature.cs index f6d624d40..ff2891b67 100644 --- a/src/Orchard.Specs/MultiTenancy.feature.cs +++ b/src/Orchard.Specs/MultiTenancy.feature.cs @@ -1,20 +1,20 @@ // ------------------------------------------------------------------------------ // // This code was generated by SpecFlow (http://www.specflow.org/). -// SpecFlow Version:1.3.0.0 -// Runtime Version:2.0.50727.4927 +// SpecFlow Version:1.3.2.0 +// Runtime Version:4.0.30319.1 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // // ------------------------------------------------------------------------------ #region Designer generated code -namespace Orchard.Specs +namespace Orchard.Tests { using TechTalk.SpecFlow; - [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.3.0.0")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.3.2.0")] [System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [NUnit.Framework.TestFixtureAttribute()] [NUnit.Framework.DescriptionAttribute("Multiple tenant management")] @@ -67,7 +67,7 @@ testRunner.And("I have installed \"Orchard.MultiTenancy\""); #line 9 testRunner.When("I go to \"Admin/MultiTenancy\""); #line 10 -testRunner.Then("I should see \"List of Site\'s Tenants\""); +testRunner.Then("I should see \"List of Site's Tenants\""); #line 11 testRunner.And("I should see \"Default\""); #line 12 @@ -229,7 +229,7 @@ testRunner.When("I go to \"Admin/MultiTenancy/Add\""); "scott.example.org"}); table4.AddRow(new string[] { "DataProvider", - "SQLite"}); + "SqlCe"}); #line 63 testRunner.And("I fill in", ((string)(null)), table4); #line 68 @@ -243,7 +243,7 @@ testRunner.Then("I should see \"Welcome to Orchard\""); #line 72 testRunner.And("I should see \"Finish Setup\""); #line 73 -testRunner.And("I should not see \"SQLite\""); +testRunner.And("I should not see \"SQL Server Compact\""); #line 74 testRunner.And("the status should be 200 OK"); #line hidden diff --git a/src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj b/src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj index 0faae51d2..6e1854a7a 100644 --- a/src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj +++ b/src/Orchard.Tests.Modules/Orchard.Tests.Modules.csproj @@ -83,10 +83,9 @@ 3.5 - + False - ..\..\lib\sqlite\System.Data.SQLite.DLL - True + ..\..\lib\sqlce\System.Data.SqlServerCe.dll @@ -181,7 +180,16 @@ Other similar extension points exist, see Microsoft.Common.targets. - - --> + + + + + + + + + + + \ No newline at end of file diff --git a/src/Orchard.Tests/Data/Builders/SessionFactoryBuilderTests.cs b/src/Orchard.Tests/Data/Builders/SessionFactoryBuilderTests.cs index 2d0368ac3..e52f7bf73 100644 --- a/src/Orchard.Tests/Data/Builders/SessionFactoryBuilderTests.cs +++ b/src/Orchard.Tests/Data/Builders/SessionFactoryBuilderTests.cs @@ -50,19 +50,19 @@ namespace Orchard.Tests.Data.Builders { [Test] - public void SQLiteSchemaShouldBeGeneratedAndUsable() { + public void SqlCeSchemaShouldBeGeneratedAndUsable() { var recordDescriptors = new[] { new RecordBlueprint {TableName = "Hello", Type = typeof (FooRecord)} }; var manager = (IDataServicesProviderFactory) new DataServicesProviderFactory(new[] { new Meta( - (dataFolder, connectionString) => new SQLiteDataServicesProvider(dataFolder, connectionString), - new Dictionary {{"ProviderName", "SQLite"}}) + (dataFolder, connectionString) => new SqlCeDataServicesProvider(dataFolder, connectionString), + new Dictionary {{"ProviderName", "SqlCe"}}) }); var parameters = new SessionFactoryParameters { - Provider = "SQLite", + Provider = "SqlCe", DataFolder = _tempDataFolder, RecordDescriptors = recordDescriptors }; diff --git a/src/Orchard.Tests/DataMigration/SchemaBuilderTests.cs b/src/Orchard.Tests/DataMigration/SchemaBuilderTests.cs index 7e692d13b..1cfc414e4 100644 --- a/src/Orchard.Tests/DataMigration/SchemaBuilderTests.cs +++ b/src/Orchard.Tests/DataMigration/SchemaBuilderTests.cs @@ -26,13 +26,13 @@ namespace Orchard.Tests.DataMigration { var builder = new ContainerBuilder(); - builder.RegisterInstance(new ShellSettings { DataTablePrefix = "TEST_", DataProvider = "SQLite" }); + builder.RegisterInstance(new ShellSettings { DataTablePrefix = "TEST_", DataProvider = "SqlCe" }); var session = _sessionFactory.OpenSession(); builder.RegisterType().As(); builder.RegisterInstance(new DefaultContentManagerTests.TestSessionLocator(session)).As(); - builder.RegisterInstance(new ShellSettings { DataProvider = "SQLite", DataTablePrefix = "TEST_" }).As(); - builder.RegisterType().As(); + builder.RegisterInstance(new ShellSettings { DataProvider = "SqlCe", DataTablePrefix = "TEST_" }).As(); + builder.RegisterType().As(); _container = builder.Build(); _interpreter = _container.Resolve() as DefaultDataMigrationInterpreter; @@ -65,7 +65,7 @@ namespace Orchard.Tests.DataMigration { .DropIndex("IDX_XYZ")) .DropForeignKey("Address", "User_Address") .DropTable("Address") - .ExecuteSql("drop database", statement => statement.ForProvider("SQLite")) + .ExecuteSql("drop database", statement => statement.ForProvider("SqlCe")) .ExecuteSql("DROP DATABASE", statement => statement.ForProvider("SQLServer")); } diff --git a/src/Orchard.Tests/DataUtility.cs b/src/Orchard.Tests/DataUtility.cs index 7b0c558d0..4fc994a59 100644 --- a/src/Orchard.Tests/DataUtility.cs +++ b/src/Orchard.Tests/DataUtility.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using FluentNHibernate.Automapping; using FluentNHibernate.Automapping.Alterations; @@ -19,12 +20,21 @@ namespace Orchard.Tests { //var persistenceModel = AutoMap.Source(new Types(types)) // .Alterations(alt => AddAlterations(alt, types)) // .Conventions.AddFromAssemblyOf(); - var persistenceModel = AbstractDataServicesProvider.CreatePersistenceModel(types.Select(t => new RecordBlueprint { TableName = "Test_" + t.Name,Type = t })); + var persistenceModel = AbstractDataServicesProvider.CreatePersistenceModel(types.Select(t => new RecordBlueprint { TableName = "Test_" + t.Name, Type = t })); + var persistenceConfigurer = new SqlCeDataServicesProvider(fileName).GetPersistenceConfigurer(true/*createDatabase*/); + ((MsSqlCeConfiguration)persistenceConfigurer).ShowSql(); return Fluently.Configure() - .Database(SQLiteConfiguration.Standard.UsingFile(fileName).ShowSql()) + .Database(persistenceConfigurer) .Mappings(m => m.AutoMappings.Add(persistenceModel)) - .ExposeConfiguration(c => new SchemaExport(c).Create(false /*script*/, true /*export*/)) + .ExposeConfiguration(c => { + // This is to work around what looks to be an issue in the NHibernate driver: + // When inserting a row with IDENTITY column, the "SELET @@IDENTITY" statement + // is issued as a separate command. By default, it is also issued in a separate + // connection, which is not supported (returns NULL). + c.SetProperty("connection.release_mode", "on_close"); + new SchemaExport(c).Create(false /*script*/, true /*export*/); + }) .BuildSessionFactory(); } diff --git a/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs b/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs index f9b23159e..e50dd1567 100644 --- a/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs +++ b/src/Orchard.Tests/Environment/Configuration/DefaultTenantManagerTests.cs @@ -21,13 +21,13 @@ namespace Orchard.Tests.Environment.Configuration { [Test] public void SingleSettingsFileShouldComeBackAsExpected() { - _appDataFolder.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); + _appDataFolder.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SqlCe\r\nDataConnectionString: something else"); IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock().Object); var settings = loader.LoadSettings().Single(); Assert.That(settings, Is.Not.Null); Assert.That(settings.Name, Is.EqualTo("Default")); - Assert.That(settings.DataProvider, Is.EqualTo("SQLite")); + Assert.That(settings.DataProvider, Is.EqualTo("SqlCe")); Assert.That(settings.DataConnectionString, Is.EqualTo("something else")); } @@ -35,8 +35,8 @@ namespace Orchard.Tests.Environment.Configuration { [Test] public void MultipleFilesCanBeDetected() { - _appDataFolder.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); - _appDataFolder.CreateFile("Sites\\Another\\Settings.txt", "Name: Another\r\nDataProvider: SQLite2\r\nDataConnectionString: something else2"); + _appDataFolder.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SqlCe\r\nDataConnectionString: something else"); + _appDataFolder.CreateFile("Sites\\Another\\Settings.txt", "Name: Another\r\nDataProvider: SqlCe2\r\nDataConnectionString: something else2"); IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock().Object); var settings = loader.LoadSettings(); @@ -44,18 +44,18 @@ namespace Orchard.Tests.Environment.Configuration { var def = settings.Single(x => x.Name == "Default"); Assert.That(def.Name, Is.EqualTo("Default")); - Assert.That(def.DataProvider, Is.EqualTo("SQLite")); + Assert.That(def.DataProvider, Is.EqualTo("SqlCe")); Assert.That(def.DataConnectionString, Is.EqualTo("something else")); var alt = settings.Single(x => x.Name == "Another"); Assert.That(alt.Name, Is.EqualTo("Another")); - Assert.That(alt.DataProvider, Is.EqualTo("SQLite2")); + Assert.That(alt.DataProvider, Is.EqualTo("SqlCe2")); Assert.That(alt.DataConnectionString, Is.EqualTo("something else2")); } [Test] public void NewSettingsCanBeStored() { - _appDataFolder.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SQLite\r\nDataConnectionString: something else"); + _appDataFolder.CreateFile("Sites\\Default\\Settings.txt", "Name: Default\r\nDataProvider: SqlCe\r\nDataConnectionString: something else"); IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock().Object); var foo = new ShellSettings { Name = "Foo", DataProvider = "Bar", DataConnectionString = "Quux" }; diff --git a/src/Orchard.Tests/FluentDbTests.cs b/src/Orchard.Tests/FluentDbTests.cs index c7168484a..2a9002c33 100644 --- a/src/Orchard.Tests/FluentDbTests.cs +++ b/src/Orchard.Tests/FluentDbTests.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.IO; using System.Linq; using FluentNHibernate.Automapping; using FluentNHibernate.Cfg; @@ -9,6 +10,7 @@ using NHibernate; using NHibernate.Criterion; using NHibernate.Tool.hbm2ddl; using NUnit.Framework; +using Orchard.Data.Providers; using Orchard.Tests.Records; namespace Orchard.Tests { @@ -32,17 +34,28 @@ namespace Orchard.Tests { [Test] public void CreatingSchemaForStatedClassesInTempFile() { - var types = new Types(typeof (FooRecord), typeof (BarRecord)); + var types = new Types(typeof(FooRecord), typeof(BarRecord)); + + var fileName = "temp.sdf"; + var persistenceConfigurer = new SqlCeDataServicesProvider(fileName).GetPersistenceConfigurer(true/*createDatabase*/); + ((MsSqlCeConfiguration)persistenceConfigurer).ShowSql(); var sessionFactory = Fluently.Configure() - .Database(SQLiteConfiguration.Standard.UsingFile("temp")) + .Database(persistenceConfigurer) .Mappings(m => m.AutoMappings.Add(AutoMap.Source(types))) - .ExposeConfiguration(c => new SchemaExport(c).Create(false, true)) + .ExposeConfiguration(c => { + // This is to work around what looks to be an issue in the NHibernate driver: + // When inserting a row with IDENTITY column, the "SELET @@IDENTITY" statement + // is issued as a separate command. By default, it is also issued in a separate + // connection, which is not supported (returns NULL). + c.SetProperty("connection.release_mode", "on_close"); + new SchemaExport(c).Create(false, true); + }) .BuildSessionFactory(); var session = sessionFactory.OpenSession(); - session.Save(new FooRecord {Name = "Hello"}); - session.Save(new BarRecord {Height = 3, Width = 4.5m}); + session.Save(new FooRecord { Name = "Hello" }); + session.Save(new BarRecord { Height = 3, Width = 4.5m }); session.Close(); session = sessionFactory.OpenSession(); @@ -52,22 +65,13 @@ namespace Orchard.Tests { session.Close(); } - [Test] - public void InMemorySQLiteCanBeUsedInSessionFactory() { - var sessionFactory = Fluently.Configure() - .Database(SQLiteConfiguration.Standard.InMemory()) - .BuildSessionFactory(); - - var session = sessionFactory.OpenSession(); - session.Close(); - } [Test] public void UsingDataUtilityToBuildSessionFactory() { - var factory = DataUtility.CreateSessionFactory(typeof (FooRecord), typeof (BarRecord)); + var factory = DataUtility.CreateSessionFactory(typeof(FooRecord), typeof(BarRecord)); var session = factory.OpenSession(); - var foo1 = new FooRecord {Name = "world"}; + var foo1 = new FooRecord { Name = "world" }; session.Save(foo1); session.Close(); diff --git a/src/Orchard.Tests/Orchard.Framework.Tests.csproj b/src/Orchard.Tests/Orchard.Framework.Tests.csproj index d37fa44fe..c9c9a800c 100644 --- a/src/Orchard.Tests/Orchard.Framework.Tests.csproj +++ b/src/Orchard.Tests/Orchard.Framework.Tests.csproj @@ -108,10 +108,9 @@ 3.5 - + False - ..\..\lib\sqlite\System.Data.SQLite.DLL - True + ..\..\lib\sqlce\System.Data.SqlServerCe.dll 3.0 @@ -294,7 +293,15 @@ Other similar extension points exist, see Microsoft.Common.targets. - - --> - \ No newline at end of file + + + + + + + + + + + \ No newline at end of file diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.ascx index 12ce6570a..65dee5bca 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.ascx +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Add.ascx @@ -22,8 +22,8 @@
- <%: Html.RadioButtonFor(svm => svm.DataProvider, "SQLite", new { id = "builtinDatabaseOption" })%> - + <%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlCe", new { id = "builtinDatabaseOption" })%> +
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" })%> diff --git a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.ascx b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.ascx index 63dd7aaed..077311a3f 100644 --- a/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.ascx +++ b/src/Orchard.Web/Modules/Orchard.MultiTenancy/Views/Admin/Edit.ascx @@ -26,8 +26,8 @@
<% } %>
- <%: Html.RadioButtonFor(svm => svm.DataProvider, "SQLite", new { id = "builtinDatabaseOption" })%> - + <%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlCe", new { id = "builtinDatabaseOption" })%> +
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" })%> diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Commands/SetupCommand.cs b/src/Orchard.Web/Modules/Orchard.Setup/Commands/SetupCommand.cs index 8970ccb15..8caa19491 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Commands/SetupCommand.cs +++ b/src/Orchard.Web/Modules/Orchard.Setup/Commands/SetupCommand.cs @@ -32,7 +32,7 @@ namespace Orchard.Setup.Commands { [OrchardSwitch] public string EnabledFeatures { get; set; } - [CommandHelp("setup /SiteName: /AdminUserName: /AdminPassword: /DatabaseProvider: " + + [CommandHelp("setup /SiteName: /AdminUserName: /AdminPassword: /DatabaseProvider: " + "/DatabaseConnectionString: /DatabaseTablePrefix: /EnabledFeatures:" + "\r\n\tRun first time setup for the site or for a given tenant")] [CommandName("setup")] diff --git a/src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.ascx b/src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.ascx index 8f6195891..a3204ae81 100644 --- a/src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.ascx +++ b/src/Orchard.Web/Modules/Orchard.Setup/Views/Setup/Index.ascx @@ -29,7 +29,7 @@ if (!Model.DatabaseIsPreconfigured) { %> <%: Html.ValidationMessage("DatabaseOptions", "Unable to setup data storage") %>
<%: Html.RadioButtonFor(svm => svm.DatabaseOptions, true, new { id = "builtin" })%> - +
<%: Html.RadioButtonFor(svm => svm.DatabaseOptions, false, new { id = "sql" })%> diff --git a/src/Orchard.Web/Orchard.Web.csproj b/src/Orchard.Web/Orchard.Web.csproj index d50af15f3..fa2633a22 100644 --- a/src/Orchard.Web/Orchard.Web.csproj +++ b/src/Orchard.Web/Orchard.Web.csproj @@ -65,11 +65,6 @@ 3.5 - - False - ..\..\lib\sqlite\System.Data.SQLite.DLL - True - @@ -324,32 +319,19 @@ --> - - - + + - - - - + + - $(ProjectDir)\..\Manifests - - + diff --git a/src/Orchard/Data/Migration/Interpreters/SqLiteCommandInterpreter.cs b/src/Orchard/Data/Migration/Interpreters/SqlCeCommandInterpreter.cs similarity index 90% rename from src/Orchard/Data/Migration/Interpreters/SqLiteCommandInterpreter.cs rename to src/Orchard/Data/Migration/Interpreters/SqlCeCommandInterpreter.cs index 0a1a5563f..637565da2 100644 --- a/src/Orchard/Data/Migration/Interpreters/SqLiteCommandInterpreter.cs +++ b/src/Orchard/Data/Migration/Interpreters/SqlCeCommandInterpreter.cs @@ -1,7 +1,7 @@ using Orchard.Data.Migration.Schema; namespace Orchard.Data.Migration.Interpreters { - public class SqLiteCommandInterpreter : + public class SqlCeCommandInterpreter : ICommandInterpreter, ICommandInterpreter, ICommandInterpreter, @@ -34,7 +34,7 @@ namespace Orchard.Data.Migration.Interpreters { } public string DataProvider { - get { return "SQLite"; } + get { return "SqlCe"; } } } } diff --git a/src/Orchard/Data/Providers/SQLiteDataServicesProvider.cs b/src/Orchard/Data/Providers/SQLiteDataServicesProvider.cs deleted file mode 100644 index 634309cd7..000000000 --- a/src/Orchard/Data/Providers/SQLiteDataServicesProvider.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.IO; -using FluentNHibernate.Cfg.Db; - -namespace Orchard.Data.Providers { - public class SQLiteDataServicesProvider : AbstractDataServicesProvider { - private readonly string _dataFolder; - private readonly string _connectionString; - - public SQLiteDataServicesProvider(string dataFolder, string connectionString) { - _dataFolder = dataFolder; - _connectionString = connectionString; - } - - public static string ProviderName { - get { return "SQLite"; } - } - - public override IPersistenceConfigurer GetPersistenceConfigurer(bool createDatabase) { - var persistence = SQLiteConfiguration.Standard; - if (string.IsNullOrEmpty(_connectionString)) { - var dataFile = Path.Combine(_dataFolder, "Orchard.db"); - - if (!Directory.Exists(_dataFolder)) { - Directory.CreateDirectory(_dataFolder); - } - - if (createDatabase && File.Exists(dataFile)) { - File.Delete(dataFile); - } - - persistence = persistence.UsingFile(dataFile); - } - else { - persistence = persistence.ConnectionString(_connectionString); - } - return persistence; - } - } -} diff --git a/src/Orchard/Data/Providers/SqlCeDataServicesProvider.cs b/src/Orchard/Data/Providers/SqlCeDataServicesProvider.cs index cb22ee144..421e8c503 100644 --- a/src/Orchard/Data/Providers/SqlCeDataServicesProvider.cs +++ b/src/Orchard/Data/Providers/SqlCeDataServicesProvider.cs @@ -4,12 +4,19 @@ using FluentNHibernate.Cfg.Db; namespace Orchard.Data.Providers { public class SqlCeDataServicesProvider : AbstractDataServicesProvider { + private readonly string _fileName; private readonly string _dataFolder; private readonly string _connectionString; public SqlCeDataServicesProvider(string dataFolder, string connectionString) { _dataFolder = dataFolder; _connectionString = connectionString; + _fileName = Path.Combine(_dataFolder, "Orchard.sdf"); + } + + public SqlCeDataServicesProvider(string fileName) { + _dataFolder = Path.GetDirectoryName(fileName); + _fileName = fileName; } public static string ProviderName { @@ -19,36 +26,31 @@ namespace Orchard.Data.Providers { public override IPersistenceConfigurer GetPersistenceConfigurer(bool createDatabase) { var persistence = MsSqlCeConfiguration.Standard; - if (string.IsNullOrEmpty(_connectionString)) { - var dataFile = Path.Combine(_dataFolder, "Orchard.sdf"); - - if (!Directory.Exists(_dataFolder)) { - Directory.CreateDirectory(_dataFolder); - } - - if (createDatabase && File.Exists(dataFile)) { - File.Delete(dataFile); - } - - string localConnectionString = string.Format("Data Source={0}", dataFile); - if (!File.Exists(dataFile)) { - CreateSqlCeDatabaseFile(localConnectionString); - } - - persistence = persistence.ConnectionString(localConnectionString); + if (createDatabase) { + File.Delete(_fileName); } - else { - persistence = persistence.ConnectionString(_connectionString); + + string localConnectionString = string.Format("Data Source={0}", _fileName); + if (!File.Exists(_fileName)) { + CreateSqlCeDatabaseFile(localConnectionString); } + + persistence = persistence.ConnectionString(localConnectionString); return persistence; } private void CreateSqlCeDatabaseFile(string connectionString) { + if (!string.IsNullOrEmpty(_dataFolder)) + Directory.CreateDirectory(_dataFolder); + // We want to execute this code using Reflection, to avoid having a binary // dependency on SqlCe assembly //engine engine = new SqlCeEngine(); - var sqlceEngineHandle = Activator.CreateInstance("System.Data.SqlServerCe", "System.Data.SqlServerCe.SqlCeEngine"); + const string assemblyName = "System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL"; + const string typeName = "System.Data.SqlServerCe.SqlCeEngine"; + + var sqlceEngineHandle = Activator.CreateInstance(assemblyName, typeName); var engine = sqlceEngineHandle.Unwrap(); //engine.LocalConnectionString = connectionString; diff --git a/src/Orchard/Data/Providers/SqlServerDataServicesProvider.cs b/src/Orchard/Data/Providers/SqlServerDataServicesProvider.cs index 5d61f558d..0f0d80b8b 100644 --- a/src/Orchard/Data/Providers/SqlServerDataServicesProvider.cs +++ b/src/Orchard/Data/Providers/SqlServerDataServicesProvider.cs @@ -11,7 +11,6 @@ namespace Orchard.Data.Providers { _connectionString = connectionString; } - public static string ProviderName { get { return "SqlServer"; } } diff --git a/src/Orchard/Orchard.Framework.csproj b/src/Orchard/Orchard.Framework.csproj index 502982b9d..211158ecc 100644 --- a/src/Orchard/Orchard.Framework.csproj +++ b/src/Orchard/Orchard.Framework.csproj @@ -364,7 +364,7 @@ - + @@ -531,7 +531,6 @@ - diff --git a/src/Tools/MSBuild.Orchard.Tasks.Tests/TestData/SimpleWebProject.xml b/src/Tools/MSBuild.Orchard.Tasks.Tests/TestData/SimpleWebProject.xml index a1ccc32c1..def2347eb 100644 --- a/src/Tools/MSBuild.Orchard.Tasks.Tests/TestData/SimpleWebProject.xml +++ b/src/Tools/MSBuild.Orchard.Tasks.Tests/TestData/SimpleWebProject.xml @@ -54,11 +54,6 @@ 3.5 - - False - ..\..\lib\sqlite\System.Data.SQLite.DLL - True - False ..\..\lib\aspnetmvc\System.Web.Mvc.dll