mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +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:
@@ -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<CreateDataServicesProvider>(
|
||||
(dataFolder, connectionString) => new SQLiteDataServicesProvider(dataFolder, connectionString),
|
||||
new Dictionary<string, object> {{"ProviderName", "SQLite"}})
|
||||
(dataFolder, connectionString) => new SqlCeDataServicesProvider(dataFolder, connectionString),
|
||||
new Dictionary<string, object> {{"ProviderName", "SqlCe"}})
|
||||
});
|
||||
|
||||
var parameters = new SessionFactoryParameters {
|
||||
Provider = "SQLite",
|
||||
Provider = "SqlCe",
|
||||
DataFolder = _tempDataFolder,
|
||||
RecordDescriptors = recordDescriptors
|
||||
};
|
||||
|
@@ -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<DefaultDataMigrationInterpreter>().As<IDataMigrationInterpreter>();
|
||||
builder.RegisterInstance(new DefaultContentManagerTests.TestSessionLocator(session)).As<ISessionLocator>();
|
||||
builder.RegisterInstance(new ShellSettings { DataProvider = "SQLite", DataTablePrefix = "TEST_" }).As<ShellSettings>();
|
||||
builder.RegisterType<SqLiteCommandInterpreter>().As<ICommandInterpreter>();
|
||||
builder.RegisterInstance(new ShellSettings { DataProvider = "SqlCe", DataTablePrefix = "TEST_" }).As<ShellSettings>();
|
||||
builder.RegisterType<SqlCeCommandInterpreter>().As<ICommandInterpreter>();
|
||||
_container = builder.Build();
|
||||
|
||||
_interpreter = _container.Resolve<IDataMigrationInterpreter>() 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"));
|
||||
}
|
||||
|
||||
|
@@ -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<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()
|
||||
.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();
|
||||
}
|
||||
|
||||
|
@@ -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<IShellSettingsManagerEventHandler>().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<IShellSettingsManagerEventHandler>().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<IShellSettingsManagerEventHandler>().Object);
|
||||
var foo = new ShellSettings { Name = "Foo", DataProvider = "Bar", DataConnectionString = "Quux" };
|
||||
|
@@ -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();
|
||||
|
||||
|
@@ -108,10 +108,9 @@
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<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>
|
||||
<HintPath>..\..\lib\sqlite\System.Data.SQLite.DLL</HintPath>
|
||||
<Private>True</Private>
|
||||
<HintPath>..\..\lib\sqlce\System.Data.SqlServerCe.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
@@ -294,7 +293,15 @@
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</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>
|
Reference in New Issue
Block a user