mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-19 10:07:55 +08:00
Completely remove support from SQLite, use SqlCe instead
--HG-- branch : dev rename : src/Orchard/Data/Migration/Interpreters/SqLiteCommandInterpreter.cs => src/Orchard/Data/Migration/Interpreters/SqlCeCommandInterpreter.cs
This commit is contained in:
@@ -79,10 +79,9 @@
|
|||||||
<Reference Include="System.Core">
|
<Reference Include="System.Core">
|
||||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
<Reference Include="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\lib\sqlite\System.Data.SQLite.DLL</HintPath>
|
<HintPath>..\..\lib\sqlce\System.Data.SqlServerCe.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Web.Abstractions">
|
<Reference Include="System.Web.Abstractions">
|
||||||
@@ -149,7 +148,16 @@
|
|||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
</Target>
|
</Target>
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
-->
|
||||||
|
<Target Name="CopySqlCeBinaries">
|
||||||
|
<ItemGroup>
|
||||||
|
<SqlCeBinariesx86 Include="$(ProjectDir)..\..\lib\sqlce\x86\*.*" />
|
||||||
|
<SqlCeBinariesx64 Include="$(ProjectDir)..\..\lib\sqlce\amd64\*.*" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Copy SourceFiles="@(SqlCeBinariesx86)" DestinationFolder="$(ProjectDir)$(OutputPath)x86" SkipUnchangedFiles="true" />
|
||||||
|
<Copy SourceFiles="@(SqlCeBinariesx64)" DestinationFolder="$(ProjectDir)$(OutputPath)amd64" SkipUnchangedFiles="true" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
<CallTarget Targets="CopySqlCeBinaries" />
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
@@ -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
|
add profiling data
|
||||||
feature disable Orchard.DevTools
|
feature disable Orchard.DevTools
|
||||||
|
@@ -9,11 +9,11 @@ namespace Orchard.Specs.Hosting {
|
|||||||
return new TraceEnabledBuilder(sessionFactoryParameters.DataFolder, sessionFactoryParameters.ConnectionString);
|
return new TraceEnabledBuilder(sessionFactoryParameters.DataFolder, sessionFactoryParameters.ConnectionString);
|
||||||
}
|
}
|
||||||
|
|
||||||
class TraceEnabledBuilder : SQLiteDataServicesProvider {
|
class TraceEnabledBuilder : SqlCeDataServicesProvider {
|
||||||
public TraceEnabledBuilder(string dataFolder, string connectionString) : base(dataFolder, connectionString) {
|
public TraceEnabledBuilder(string dataFolder, string connectionString) : base(dataFolder, connectionString) {
|
||||||
}
|
}
|
||||||
public override IPersistenceConfigurer GetPersistenceConfigurer(bool createDatabase) {
|
public override IPersistenceConfigurer GetPersistenceConfigurer(bool createDatabase) {
|
||||||
var config = (SQLiteConfiguration)base.GetPersistenceConfigurer(createDatabase);
|
var config = (MsSqlCeConfiguration)base.GetPersistenceConfigurer(createDatabase);
|
||||||
//config.ShowSql();
|
//config.ShowSql();
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
@@ -64,13 +64,13 @@ Scenario: A new tenant with preconfigured database goes to the setup screen
|
|||||||
| name | value |
|
| name | value |
|
||||||
| Name | Scott |
|
| Name | Scott |
|
||||||
| RequestUrlHost | scott.example.org |
|
| RequestUrlHost | scott.example.org |
|
||||||
| DataProvider | SQLite |
|
| DataProvider | SqlCe |
|
||||||
And I hit "Save"
|
And I hit "Save"
|
||||||
And I am redirected
|
And I am redirected
|
||||||
And I go to "/Setup" on host scott.example.org
|
And I go to "/Setup" on host scott.example.org
|
||||||
Then I should see "Welcome to Orchard"
|
Then I should see "Welcome to Orchard"
|
||||||
And I should see "Finish Setup"
|
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
|
And the status should be 200 OK
|
||||||
|
|
||||||
Scenario: A new tenant runs the setup
|
Scenario: A new tenant runs the setup
|
||||||
|
14
src/Orchard.Specs/MultiTenancy.feature.cs
generated
14
src/Orchard.Specs/MultiTenancy.feature.cs
generated
@@ -1,20 +1,20 @@
|
|||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by SpecFlow (http://www.specflow.org/).
|
// This code was generated by SpecFlow (http://www.specflow.org/).
|
||||||
// SpecFlow Version:1.3.0.0
|
// SpecFlow Version:1.3.2.0
|
||||||
// Runtime Version:2.0.50727.4927
|
// Runtime Version:4.0.30319.1
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
// the code is regenerated.
|
// the code is regenerated.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
#region Designer generated code
|
#region Designer generated code
|
||||||
namespace Orchard.Specs
|
namespace Orchard.Tests
|
||||||
{
|
{
|
||||||
using TechTalk.SpecFlow;
|
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()]
|
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
[NUnit.Framework.TestFixtureAttribute()]
|
[NUnit.Framework.TestFixtureAttribute()]
|
||||||
[NUnit.Framework.DescriptionAttribute("Multiple tenant management")]
|
[NUnit.Framework.DescriptionAttribute("Multiple tenant management")]
|
||||||
@@ -67,7 +67,7 @@ testRunner.And("I have installed \"Orchard.MultiTenancy\"");
|
|||||||
#line 9
|
#line 9
|
||||||
testRunner.When("I go to \"Admin/MultiTenancy\"");
|
testRunner.When("I go to \"Admin/MultiTenancy\"");
|
||||||
#line 10
|
#line 10
|
||||||
testRunner.Then("I should see \"List of Site\'s Tenants\"");
|
testRunner.Then("I should see \"List of Site's Tenants\"");
|
||||||
#line 11
|
#line 11
|
||||||
testRunner.And("I should see \"<span class=\"tenantName\">Default</span>\"");
|
testRunner.And("I should see \"<span class=\"tenantName\">Default</span>\"");
|
||||||
#line 12
|
#line 12
|
||||||
@@ -229,7 +229,7 @@ testRunner.When("I go to \"Admin/MultiTenancy/Add\"");
|
|||||||
"scott.example.org"});
|
"scott.example.org"});
|
||||||
table4.AddRow(new string[] {
|
table4.AddRow(new string[] {
|
||||||
"DataProvider",
|
"DataProvider",
|
||||||
"SQLite"});
|
"SqlCe"});
|
||||||
#line 63
|
#line 63
|
||||||
testRunner.And("I fill in", ((string)(null)), table4);
|
testRunner.And("I fill in", ((string)(null)), table4);
|
||||||
#line 68
|
#line 68
|
||||||
@@ -243,7 +243,7 @@ testRunner.Then("I should see \"Welcome to Orchard\"");
|
|||||||
#line 72
|
#line 72
|
||||||
testRunner.And("I should see \"Finish Setup\"");
|
testRunner.And("I should see \"Finish Setup\"");
|
||||||
#line 73
|
#line 73
|
||||||
testRunner.And("I should not see \"SQLite\"");
|
testRunner.And("I should not see \"SQL Server Compact\"");
|
||||||
#line 74
|
#line 74
|
||||||
testRunner.And("the status should be 200 OK");
|
testRunner.And("the status should be 200 OK");
|
||||||
#line hidden
|
#line hidden
|
||||||
|
@@ -83,10 +83,9 @@
|
|||||||
<Reference Include="System.Core">
|
<Reference Include="System.Core">
|
||||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
<Reference Include="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\lib\sqlite\System.Data.SQLite.DLL</HintPath>
|
<HintPath>..\..\lib\sqlce\System.Data.SqlServerCe.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Web" />
|
<Reference Include="System.Web" />
|
||||||
<Reference Include="System.Web.Abstractions">
|
<Reference Include="System.Web.Abstractions">
|
||||||
@@ -181,7 +180,16 @@
|
|||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
</Target>
|
</Target>
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
-->
|
||||||
|
<Target Name="CopySqlCeBinaries">
|
||||||
|
<ItemGroup>
|
||||||
|
<SqlCeBinariesx86 Include="$(ProjectDir)..\..\lib\sqlce\x86\*.*" />
|
||||||
|
<SqlCeBinariesx64 Include="$(ProjectDir)..\..\lib\sqlce\amd64\*.*" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Copy SourceFiles="@(SqlCeBinariesx86)" DestinationFolder="$(ProjectDir)$(OutputPath)x86" SkipUnchangedFiles="true" />
|
||||||
|
<Copy SourceFiles="@(SqlCeBinariesx64)" DestinationFolder="$(ProjectDir)$(OutputPath)amd64" SkipUnchangedFiles="true" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
<CallTarget Targets="CopySqlCeBinaries" />
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
@@ -50,19 +50,19 @@ namespace Orchard.Tests.Data.Builders {
|
|||||||
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void SQLiteSchemaShouldBeGeneratedAndUsable() {
|
public void SqlCeSchemaShouldBeGeneratedAndUsable() {
|
||||||
var recordDescriptors = new[] {
|
var recordDescriptors = new[] {
|
||||||
new RecordBlueprint {TableName = "Hello", Type = typeof (FooRecord)}
|
new RecordBlueprint {TableName = "Hello", Type = typeof (FooRecord)}
|
||||||
};
|
};
|
||||||
|
|
||||||
var manager = (IDataServicesProviderFactory) new DataServicesProviderFactory(new[] {
|
var manager = (IDataServicesProviderFactory) new DataServicesProviderFactory(new[] {
|
||||||
new Meta<CreateDataServicesProvider>(
|
new Meta<CreateDataServicesProvider>(
|
||||||
(dataFolder, connectionString) => new SQLiteDataServicesProvider(dataFolder, connectionString),
|
(dataFolder, connectionString) => new SqlCeDataServicesProvider(dataFolder, connectionString),
|
||||||
new Dictionary<string, object> {{"ProviderName", "SQLite"}})
|
new Dictionary<string, object> {{"ProviderName", "SqlCe"}})
|
||||||
});
|
});
|
||||||
|
|
||||||
var parameters = new SessionFactoryParameters {
|
var parameters = new SessionFactoryParameters {
|
||||||
Provider = "SQLite",
|
Provider = "SqlCe",
|
||||||
DataFolder = _tempDataFolder,
|
DataFolder = _tempDataFolder,
|
||||||
RecordDescriptors = recordDescriptors
|
RecordDescriptors = recordDescriptors
|
||||||
};
|
};
|
||||||
|
@@ -26,13 +26,13 @@ namespace Orchard.Tests.DataMigration {
|
|||||||
|
|
||||||
var builder = new ContainerBuilder();
|
var builder = new ContainerBuilder();
|
||||||
|
|
||||||
builder.RegisterInstance(new ShellSettings { DataTablePrefix = "TEST_", DataProvider = "SQLite" });
|
builder.RegisterInstance(new ShellSettings { DataTablePrefix = "TEST_", DataProvider = "SqlCe" });
|
||||||
|
|
||||||
var session = _sessionFactory.OpenSession();
|
var session = _sessionFactory.OpenSession();
|
||||||
builder.RegisterType<DefaultDataMigrationInterpreter>().As<IDataMigrationInterpreter>();
|
builder.RegisterType<DefaultDataMigrationInterpreter>().As<IDataMigrationInterpreter>();
|
||||||
builder.RegisterInstance(new DefaultContentManagerTests.TestSessionLocator(session)).As<ISessionLocator>();
|
builder.RegisterInstance(new DefaultContentManagerTests.TestSessionLocator(session)).As<ISessionLocator>();
|
||||||
builder.RegisterInstance(new ShellSettings { DataProvider = "SQLite", DataTablePrefix = "TEST_" }).As<ShellSettings>();
|
builder.RegisterInstance(new ShellSettings { DataProvider = "SqlCe", DataTablePrefix = "TEST_" }).As<ShellSettings>();
|
||||||
builder.RegisterType<SqLiteCommandInterpreter>().As<ICommandInterpreter>();
|
builder.RegisterType<SqlCeCommandInterpreter>().As<ICommandInterpreter>();
|
||||||
_container = builder.Build();
|
_container = builder.Build();
|
||||||
|
|
||||||
_interpreter = _container.Resolve<IDataMigrationInterpreter>() as DefaultDataMigrationInterpreter;
|
_interpreter = _container.Resolve<IDataMigrationInterpreter>() as DefaultDataMigrationInterpreter;
|
||||||
@@ -65,7 +65,7 @@ namespace Orchard.Tests.DataMigration {
|
|||||||
.DropIndex("IDX_XYZ"))
|
.DropIndex("IDX_XYZ"))
|
||||||
.DropForeignKey("Address", "User_Address")
|
.DropForeignKey("Address", "User_Address")
|
||||||
.DropTable("Address")
|
.DropTable("Address")
|
||||||
.ExecuteSql("drop database", statement => statement.ForProvider("SQLite"))
|
.ExecuteSql("drop database", statement => statement.ForProvider("SqlCe"))
|
||||||
.ExecuteSql("DROP DATABASE", statement => statement.ForProvider("SQLServer"));
|
.ExecuteSql("DROP DATABASE", statement => statement.ForProvider("SQLServer"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using FluentNHibernate.Automapping;
|
using FluentNHibernate.Automapping;
|
||||||
using FluentNHibernate.Automapping.Alterations;
|
using FluentNHibernate.Automapping.Alterations;
|
||||||
@@ -19,12 +20,21 @@ namespace Orchard.Tests {
|
|||||||
//var persistenceModel = AutoMap.Source(new Types(types))
|
//var persistenceModel = AutoMap.Source(new Types(types))
|
||||||
// .Alterations(alt => AddAlterations(alt, types))
|
// .Alterations(alt => AddAlterations(alt, types))
|
||||||
// .Conventions.AddFromAssemblyOf<DataModule>();
|
// .Conventions.AddFromAssemblyOf<DataModule>();
|
||||||
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()
|
return Fluently.Configure()
|
||||||
.Database(SQLiteConfiguration.Standard.UsingFile(fileName).ShowSql())
|
.Database(persistenceConfigurer)
|
||||||
.Mappings(m => m.AutoMappings.Add(persistenceModel))
|
.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();
|
.BuildSessionFactory();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -21,13 +21,13 @@ namespace Orchard.Tests.Environment.Configuration {
|
|||||||
[Test]
|
[Test]
|
||||||
public void SingleSettingsFileShouldComeBackAsExpected() {
|
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<IShellSettingsManagerEventHandler>().Object);
|
IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock<IShellSettingsManagerEventHandler>().Object);
|
||||||
var settings = loader.LoadSettings().Single();
|
var settings = loader.LoadSettings().Single();
|
||||||
Assert.That(settings, Is.Not.Null);
|
Assert.That(settings, Is.Not.Null);
|
||||||
Assert.That(settings.Name, Is.EqualTo("Default"));
|
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"));
|
Assert.That(settings.DataConnectionString, Is.EqualTo("something else"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -35,8 +35,8 @@ namespace Orchard.Tests.Environment.Configuration {
|
|||||||
[Test]
|
[Test]
|
||||||
public void MultipleFilesCanBeDetected() {
|
public void MultipleFilesCanBeDetected() {
|
||||||
|
|
||||||
_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");
|
||||||
_appDataFolder.CreateFile("Sites\\Another\\Settings.txt", "Name: Another\r\nDataProvider: SQLite2\r\nDataConnectionString: something else2");
|
_appDataFolder.CreateFile("Sites\\Another\\Settings.txt", "Name: Another\r\nDataProvider: SqlCe2\r\nDataConnectionString: something else2");
|
||||||
|
|
||||||
IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock<IShellSettingsManagerEventHandler>().Object);
|
IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock<IShellSettingsManagerEventHandler>().Object);
|
||||||
var settings = loader.LoadSettings();
|
var settings = loader.LoadSettings();
|
||||||
@@ -44,18 +44,18 @@ namespace Orchard.Tests.Environment.Configuration {
|
|||||||
|
|
||||||
var def = settings.Single(x => x.Name == "Default");
|
var def = settings.Single(x => x.Name == "Default");
|
||||||
Assert.That(def.Name, Is.EqualTo("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"));
|
Assert.That(def.DataConnectionString, Is.EqualTo("something else"));
|
||||||
|
|
||||||
var alt = settings.Single(x => x.Name == "Another");
|
var alt = settings.Single(x => x.Name == "Another");
|
||||||
Assert.That(alt.Name, Is.EqualTo("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"));
|
Assert.That(alt.DataConnectionString, Is.EqualTo("something else2"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void NewSettingsCanBeStored() {
|
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<IShellSettingsManagerEventHandler>().Object);
|
IShellSettingsManager loader = new ShellSettingsManager(_appDataFolder, new Mock<IShellSettingsManagerEventHandler>().Object);
|
||||||
var foo = new ShellSettings { Name = "Foo", DataProvider = "Bar", DataConnectionString = "Quux" };
|
var foo = new ShellSettings { Name = "Foo", DataProvider = "Bar", DataConnectionString = "Quux" };
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using FluentNHibernate.Automapping;
|
using FluentNHibernate.Automapping;
|
||||||
using FluentNHibernate.Cfg;
|
using FluentNHibernate.Cfg;
|
||||||
@@ -9,6 +10,7 @@ using NHibernate;
|
|||||||
using NHibernate.Criterion;
|
using NHibernate.Criterion;
|
||||||
using NHibernate.Tool.hbm2ddl;
|
using NHibernate.Tool.hbm2ddl;
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
|
using Orchard.Data.Providers;
|
||||||
using Orchard.Tests.Records;
|
using Orchard.Tests.Records;
|
||||||
|
|
||||||
namespace Orchard.Tests {
|
namespace Orchard.Tests {
|
||||||
@@ -32,17 +34,28 @@ namespace Orchard.Tests {
|
|||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void CreatingSchemaForStatedClassesInTempFile() {
|
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()
|
var sessionFactory = Fluently.Configure()
|
||||||
.Database(SQLiteConfiguration.Standard.UsingFile("temp"))
|
.Database(persistenceConfigurer)
|
||||||
.Mappings(m => m.AutoMappings.Add(AutoMap.Source(types)))
|
.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();
|
.BuildSessionFactory();
|
||||||
|
|
||||||
var session = sessionFactory.OpenSession();
|
var session = sessionFactory.OpenSession();
|
||||||
session.Save(new FooRecord {Name = "Hello"});
|
session.Save(new FooRecord { Name = "Hello" });
|
||||||
session.Save(new BarRecord {Height = 3, Width = 4.5m});
|
session.Save(new BarRecord { Height = 3, Width = 4.5m });
|
||||||
session.Close();
|
session.Close();
|
||||||
|
|
||||||
session = sessionFactory.OpenSession();
|
session = sessionFactory.OpenSession();
|
||||||
@@ -52,22 +65,13 @@ namespace Orchard.Tests {
|
|||||||
session.Close();
|
session.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
|
||||||
public void InMemorySQLiteCanBeUsedInSessionFactory() {
|
|
||||||
var sessionFactory = Fluently.Configure()
|
|
||||||
.Database(SQLiteConfiguration.Standard.InMemory())
|
|
||||||
.BuildSessionFactory();
|
|
||||||
|
|
||||||
var session = sessionFactory.OpenSession();
|
|
||||||
session.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void UsingDataUtilityToBuildSessionFactory() {
|
public void UsingDataUtilityToBuildSessionFactory() {
|
||||||
var factory = DataUtility.CreateSessionFactory(typeof (FooRecord), typeof (BarRecord));
|
var factory = DataUtility.CreateSessionFactory(typeof(FooRecord), typeof(BarRecord));
|
||||||
|
|
||||||
var session = factory.OpenSession();
|
var session = factory.OpenSession();
|
||||||
var foo1 = new FooRecord {Name = "world"};
|
var foo1 = new FooRecord { Name = "world" };
|
||||||
session.Save(foo1);
|
session.Save(foo1);
|
||||||
session.Close();
|
session.Close();
|
||||||
|
|
||||||
|
@@ -108,10 +108,9 @@
|
|||||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
<Reference Include="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\lib\sqlite\System.Data.SQLite.DLL</HintPath>
|
<HintPath>..\..\lib\sqlce\System.Data.SqlServerCe.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Runtime.Serialization">
|
<Reference Include="System.Runtime.Serialization">
|
||||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||||
@@ -294,7 +293,15 @@
|
|||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
</Target>
|
</Target>
|
||||||
<Target Name="AfterBuild">
|
|
||||||
</Target>
|
|
||||||
-->
|
-->
|
||||||
</Project>
|
<Target Name="CopySqlCeBinaries">
|
||||||
|
<ItemGroup>
|
||||||
|
<SqlCeBinariesx86 Include="$(ProjectDir)..\..\lib\sqlce\x86\*.*" />
|
||||||
|
<SqlCeBinariesx64 Include="$(ProjectDir)..\..\lib\sqlce\amd64\*.*" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Copy SourceFiles="@(SqlCeBinariesx86)" DestinationFolder="$(ProjectDir)$(OutputPath)x86" SkipUnchangedFiles="true" />
|
||||||
|
<Copy SourceFiles="@(SqlCeBinariesx64)" DestinationFolder="$(ProjectDir)$(OutputPath)amd64" SkipUnchangedFiles="true" />
|
||||||
|
</Target>
|
||||||
|
<Target Name="AfterBuild">
|
||||||
|
<CallTarget Targets="CopySqlCeBinaries" />
|
||||||
|
</Target></Project>
|
@@ -22,8 +22,8 @@
|
|||||||
<label for="tenantDatabaseOption" class="forcheckbox"><%: T("Allow the tenant to set up the database") %></label>
|
<label for="tenantDatabaseOption" class="forcheckbox"><%: T("Allow the tenant to set up the database") %></label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SQLite", new { id = "builtinDatabaseOption" })%>
|
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlCe", new { id = "builtinDatabaseOption" })%>
|
||||||
<label for="builtinDatabaseOption" class="forcheckbox"><%: T("Use built-in data storage (SQLite)") %></label>
|
<label for="builtinDatabaseOption" class="forcheckbox"><%: T("Use built-in data storage (SQL Server Compact)") %></label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" })%>
|
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" })%>
|
||||||
|
@@ -26,8 +26,8 @@
|
|||||||
</div><%
|
</div><%
|
||||||
} %>
|
} %>
|
||||||
<div>
|
<div>
|
||||||
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SQLite", new { id = "builtinDatabaseOption" })%>
|
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlCe", new { id = "builtinDatabaseOption" })%>
|
||||||
<label for="builtinDatabaseOption" class="forcheckbox"><%: T("Use built-in data storage (SQLite)") %></label>
|
<label for="builtinDatabaseOption" class="forcheckbox"><%: T("Use built-in data storage (SQL Server Compact)") %></label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" })%>
|
<%: Html.RadioButtonFor(svm => svm.DataProvider, "SqlServer", new { id = "sqlDatabaseOption" })%>
|
||||||
|
@@ -32,7 +32,7 @@ namespace Orchard.Setup.Commands {
|
|||||||
[OrchardSwitch]
|
[OrchardSwitch]
|
||||||
public string EnabledFeatures { get; set; }
|
public string EnabledFeatures { get; set; }
|
||||||
|
|
||||||
[CommandHelp("setup /SiteName:<siteName> /AdminUserName:<username> /AdminPassword:<password> /DatabaseProvider:<SQLite|SQLServer> " +
|
[CommandHelp("setup /SiteName:<siteName> /AdminUserName:<username> /AdminPassword:<password> /DatabaseProvider:<SqlCe|SQLServer> " +
|
||||||
"/DatabaseConnectionString:<connection_string> /DatabaseTablePrefix:<table_prefix> /EnabledFeatures:<feature1,feature2,...>" +
|
"/DatabaseConnectionString:<connection_string> /DatabaseTablePrefix:<table_prefix> /EnabledFeatures:<feature1,feature2,...>" +
|
||||||
"\r\n\tRun first time setup for the site or for a given tenant")]
|
"\r\n\tRun first time setup for the site or for a given tenant")]
|
||||||
[CommandName("setup")]
|
[CommandName("setup")]
|
||||||
|
@@ -29,7 +29,7 @@ if (!Model.DatabaseIsPreconfigured) { %>
|
|||||||
<%: Html.ValidationMessage("DatabaseOptions", "Unable to setup data storage") %>
|
<%: Html.ValidationMessage("DatabaseOptions", "Unable to setup data storage") %>
|
||||||
<div>
|
<div>
|
||||||
<%: Html.RadioButtonFor(svm => svm.DatabaseOptions, true, new { id = "builtin" })%>
|
<%: Html.RadioButtonFor(svm => svm.DatabaseOptions, true, new { id = "builtin" })%>
|
||||||
<label for="builtin" class="forcheckbox"><%: T("Use built-in data storage (SQLite)") %></label>
|
<label for="builtin" class="forcheckbox"><%: T("Use built-in data storage (SQL Server Compact)")%></label>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<%: Html.RadioButtonFor(svm => svm.DatabaseOptions, false, new { id = "sql" })%>
|
<%: Html.RadioButtonFor(svm => svm.DatabaseOptions, false, new { id = "sql" })%>
|
||||||
|
@@ -65,11 +65,6 @@
|
|||||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\..\lib\sqlite\System.Data.SQLite.DLL</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web.ApplicationServices" />
|
<Reference Include="System.Web.ApplicationServices" />
|
||||||
<Reference Include="System.Web.DynamicData" />
|
<Reference Include="System.Web.DynamicData" />
|
||||||
<Reference Include="System.Web.Entity" />
|
<Reference Include="System.Web.Entity" />
|
||||||
@@ -324,32 +319,19 @@
|
|||||||
<UsingTask TaskName="Microsoft.Web.Mvc.Build.CreateAreaManifest" AssemblyName="Microsoft.Web.Mvc.Build, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
|
<UsingTask TaskName="Microsoft.Web.Mvc.Build.CreateAreaManifest" AssemblyName="Microsoft.Web.Mvc.Build, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
|
||||||
<UsingTask TaskName="Microsoft.Web.Mvc.Build.CopyAreaManifests" AssemblyName="Microsoft.Web.Mvc.Build, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
|
<UsingTask TaskName="Microsoft.Web.Mvc.Build.CopyAreaManifests" AssemblyName="Microsoft.Web.Mvc.Build, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<Target Name="CopySqlCeBinaries">
|
<Target Name="CopySqlCeBinaries">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<SqlCeBinariesx86 Include="..\..\lib\sqlce\x86\*.*"/>
|
<SqlCeBinariesx86 Include="$(ProjectDir)..\..\lib\sqlce\x86\*.*" />
|
||||||
<SqlCeBinariesx64 Include="..\..\lib\sqlce\amd64\*.*"/>
|
<SqlCeBinariesx64 Include="$(ProjectDir)..\..\lib\sqlce\amd64\*.*" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<Copy SourceFiles="@(SqlCeBinariesx86)" DestinationFolder="$(ProjectDir)$(OutputPath)x86" SkipUnchangedFiles="true" />
|
||||||
<Copy
|
<Copy SourceFiles="@(SqlCeBinariesx64)" DestinationFolder="$(ProjectDir)$(OutputPath)amd64" SkipUnchangedFiles="true" />
|
||||||
SourceFiles="@(SqlCeBinariesx86)"
|
|
||||||
DestinationFolder="$(ProjectDir)\bin\x86"
|
|
||||||
SkipUnchangedFiles="true"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<Copy
|
|
||||||
SourceFiles="@(SqlCeBinariesx64)"
|
|
||||||
DestinationFolder="$(ProjectDir)\bin\amd64"
|
|
||||||
SkipUnchangedFiles="true"
|
|
||||||
/>
|
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler">
|
<Target Name="AfterBuild" DependsOnTargets="AfterBuildCompiler">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<AreasManifestDir>$(ProjectDir)\..\Manifests</AreasManifestDir>
|
<AreasManifestDir>$(ProjectDir)\..\Manifests</AreasManifestDir>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<CallTarget Targets="CopySqlCeBinaries"/>
|
<CallTarget Targets="CopySqlCeBinaries" />
|
||||||
|
|
||||||
<!-- If this is an area child project, uncomment the following line:
|
<!-- If this is an area child project, uncomment the following line:
|
||||||
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Child" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
<CreateAreaManifest AreaName="$(AssemblyName)" AreaType="Child" AreaPath="$(ProjectDir)" ManifestPath="$(AreasManifestDir)" ContentFiles="@(Content)" />
|
||||||
-->
|
-->
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
using Orchard.Data.Migration.Schema;
|
using Orchard.Data.Migration.Schema;
|
||||||
|
|
||||||
namespace Orchard.Data.Migration.Interpreters {
|
namespace Orchard.Data.Migration.Interpreters {
|
||||||
public class SqLiteCommandInterpreter :
|
public class SqlCeCommandInterpreter :
|
||||||
ICommandInterpreter<DropColumnCommand>,
|
ICommandInterpreter<DropColumnCommand>,
|
||||||
ICommandInterpreter<AlterColumnCommand>,
|
ICommandInterpreter<AlterColumnCommand>,
|
||||||
ICommandInterpreter<CreateForeignKeyCommand>,
|
ICommandInterpreter<CreateForeignKeyCommand>,
|
||||||
@@ -34,7 +34,7 @@ namespace Orchard.Data.Migration.Interpreters {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public string DataProvider {
|
public string DataProvider {
|
||||||
get { return "SQLite"; }
|
get { return "SqlCe"; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -4,12 +4,19 @@ using FluentNHibernate.Cfg.Db;
|
|||||||
|
|
||||||
namespace Orchard.Data.Providers {
|
namespace Orchard.Data.Providers {
|
||||||
public class SqlCeDataServicesProvider : AbstractDataServicesProvider {
|
public class SqlCeDataServicesProvider : AbstractDataServicesProvider {
|
||||||
|
private readonly string _fileName;
|
||||||
private readonly string _dataFolder;
|
private readonly string _dataFolder;
|
||||||
private readonly string _connectionString;
|
private readonly string _connectionString;
|
||||||
|
|
||||||
public SqlCeDataServicesProvider(string dataFolder, string connectionString) {
|
public SqlCeDataServicesProvider(string dataFolder, string connectionString) {
|
||||||
_dataFolder = dataFolder;
|
_dataFolder = dataFolder;
|
||||||
_connectionString = connectionString;
|
_connectionString = connectionString;
|
||||||
|
_fileName = Path.Combine(_dataFolder, "Orchard.sdf");
|
||||||
|
}
|
||||||
|
|
||||||
|
public SqlCeDataServicesProvider(string fileName) {
|
||||||
|
_dataFolder = Path.GetDirectoryName(fileName);
|
||||||
|
_fileName = fileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ProviderName {
|
public static string ProviderName {
|
||||||
@@ -19,36 +26,31 @@ namespace Orchard.Data.Providers {
|
|||||||
public override IPersistenceConfigurer GetPersistenceConfigurer(bool createDatabase) {
|
public override IPersistenceConfigurer GetPersistenceConfigurer(bool createDatabase) {
|
||||||
var persistence = MsSqlCeConfiguration.Standard;
|
var persistence = MsSqlCeConfiguration.Standard;
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(_connectionString)) {
|
if (createDatabase) {
|
||||||
var dataFile = Path.Combine(_dataFolder, "Orchard.sdf");
|
File.Delete(_fileName);
|
||||||
|
|
||||||
if (!Directory.Exists(_dataFolder)) {
|
|
||||||
Directory.CreateDirectory(_dataFolder);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (createDatabase && File.Exists(dataFile)) {
|
string localConnectionString = string.Format("Data Source={0}", _fileName);
|
||||||
File.Delete(dataFile);
|
if (!File.Exists(_fileName)) {
|
||||||
}
|
|
||||||
|
|
||||||
string localConnectionString = string.Format("Data Source={0}", dataFile);
|
|
||||||
if (!File.Exists(dataFile)) {
|
|
||||||
CreateSqlCeDatabaseFile(localConnectionString);
|
CreateSqlCeDatabaseFile(localConnectionString);
|
||||||
}
|
}
|
||||||
|
|
||||||
persistence = persistence.ConnectionString(localConnectionString);
|
persistence = persistence.ConnectionString(localConnectionString);
|
||||||
}
|
|
||||||
else {
|
|
||||||
persistence = persistence.ConnectionString(_connectionString);
|
|
||||||
}
|
|
||||||
return persistence;
|
return persistence;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateSqlCeDatabaseFile(string connectionString) {
|
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
|
// We want to execute this code using Reflection, to avoid having a binary
|
||||||
// dependency on SqlCe assembly
|
// dependency on SqlCe assembly
|
||||||
|
|
||||||
//engine engine = new SqlCeEngine();
|
//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();
|
var engine = sqlceEngineHandle.Unwrap();
|
||||||
|
|
||||||
//engine.LocalConnectionString = connectionString;
|
//engine.LocalConnectionString = connectionString;
|
||||||
|
@@ -11,7 +11,6 @@ namespace Orchard.Data.Providers {
|
|||||||
_connectionString = connectionString;
|
_connectionString = connectionString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static string ProviderName {
|
public static string ProviderName {
|
||||||
get { return "SqlServer"; }
|
get { return "SqlServer"; }
|
||||||
}
|
}
|
||||||
|
@@ -364,7 +364,7 @@
|
|||||||
<Compile Include="Data\Migration\Interpreters\ICommandInterpreter.cs" />
|
<Compile Include="Data\Migration\Interpreters\ICommandInterpreter.cs" />
|
||||||
<Compile Include="Data\Migration\Interpreters\DefaultDataMigrationInterpreter.cs" />
|
<Compile Include="Data\Migration\Interpreters\DefaultDataMigrationInterpreter.cs" />
|
||||||
<Compile Include="Data\Migration\Interpreters\IDataMigrationInterpreter.cs" />
|
<Compile Include="Data\Migration\Interpreters\IDataMigrationInterpreter.cs" />
|
||||||
<Compile Include="Data\Migration\Interpreters\SqLiteCommandInterpreter.cs" />
|
<Compile Include="Data\Migration\Interpreters\SqlCeCommandInterpreter.cs" />
|
||||||
<Compile Include="Data\Migration\Interpreters\StringCommandInterpreter.cs" />
|
<Compile Include="Data\Migration\Interpreters\StringCommandInterpreter.cs" />
|
||||||
<Compile Include="Data\Migration\Schema\AddColumnCommand.cs" />
|
<Compile Include="Data\Migration\Schema\AddColumnCommand.cs" />
|
||||||
<Compile Include="Data\Migration\Schema\ISchemaBuilderCommand.cs" />
|
<Compile Include="Data\Migration\Schema\ISchemaBuilderCommand.cs" />
|
||||||
@@ -531,7 +531,6 @@
|
|||||||
<Compile Include="Data\Providers\AbstractDataServicesProvider.cs" />
|
<Compile Include="Data\Providers\AbstractDataServicesProvider.cs" />
|
||||||
<Compile Include="Data\Providers\DataServicesProviderFactory.cs" />
|
<Compile Include="Data\Providers\DataServicesProviderFactory.cs" />
|
||||||
<Compile Include="Data\Providers\IDataServicesProviderFactory.cs" />
|
<Compile Include="Data\Providers\IDataServicesProviderFactory.cs" />
|
||||||
<Compile Include="Data\Providers\SQLiteDataServicesProvider.cs" />
|
|
||||||
<Compile Include="Data\Providers\SqlServerDataServicesProvider.cs" />
|
<Compile Include="Data\Providers\SqlServerDataServicesProvider.cs" />
|
||||||
<Compile Include="Data\Conventions\StringLengthConvention.cs" />
|
<Compile Include="Data\Conventions\StringLengthConvention.cs" />
|
||||||
<Compile Include="Data\SessionFactoryHolder.cs" />
|
<Compile Include="Data\SessionFactoryHolder.cs" />
|
||||||
|
@@ -54,11 +54,6 @@
|
|||||||
<Reference Include="System.Data.DataSetExtensions">
|
<Reference Include="System.Data.DataSetExtensions">
|
||||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
|
|
||||||
<SpecificVersion>False</SpecificVersion>
|
|
||||||
<HintPath>..\..\lib\sqlite\System.Data.SQLite.DLL</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\..\lib\aspnetmvc\System.Web.Mvc.dll</HintPath>
|
<HintPath>..\..\lib\aspnetmvc\System.Web.Mvc.dll</HintPath>
|
||||||
|
Reference in New Issue
Block a user