Skip to content

Commit 1a9bed3

Browse files
committed
#568 Add support for SQLite (not yet complete)
1 parent c1c1017 commit 1a9bed3

File tree

6 files changed

+26
-46
lines changed

6 files changed

+26
-46
lines changed

EntityFramework.Reverse.POCO.Generator/EF.Reverse.POCO.v3.ttinclude

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7064,7 +7064,7 @@
70647064
switch (Settings.GenerationLanguage)
70657065
{
70667066
case GenerationLanguage.CSharp:
7067-
return new SQLiteToCSharp();
7067+
return new SqLiteToCSharp();
70687068

70697069
case GenerationLanguage.Javascript:
70707070
// Not yet supported
@@ -7327,7 +7327,7 @@
73277327
}
73287328
}
73297329

7330-
public class SQLiteToCSharp : IDatabaseToPropertyType
7330+
public class SqLiteToCSharp : IDatabaseToPropertyType
73317331
{
73327332
// [Database type] = Language type
73337333
public Dictionary<string, string> GetMapping()
@@ -13578,7 +13578,7 @@ and limitations under the License.
1357813578
return new SqlServerDatabaseReader(factory, databaseToPropertyType);
1357913579

1358013580
case DatabaseType.SQLite:
13581-
return new SQLiteDatabaseReader(factory, databaseToPropertyType);
13581+
return new SqLiteDatabaseReader(factory, databaseToPropertyType);
1358213582

1358313583
case DatabaseType.SqlCe:
1358413584
return new SqlServerCeDatabaseReader(factory, databaseToPropertyType);
@@ -14673,9 +14673,9 @@ ORDER BY SchemaName, TableName, TriggerName;";
1467314673
}
1467414674
}
1467514675

14676-
public class SQLiteDatabaseReader : DatabaseReader
14676+
public class SqLiteDatabaseReader : DatabaseReader
1467714677
{
14678-
public SQLiteDatabaseReader(DbProviderFactory factory, IDatabaseToPropertyType databaseToPropertyType)
14678+
public SqLiteDatabaseReader(DbProviderFactory factory, IDatabaseToPropertyType databaseToPropertyType)
1467914679
: base(factory, databaseToPropertyType)
1468014680
{
1468114681
StoredProcedureParameterDbType = new Dictionary<string, string>
@@ -14835,14 +14835,7 @@ WHERE ColumnName != ''";
1483514835

1483614836
protected override string MultiContextSQL()
1483714837
{
14838-
return @"
14839-
SELECT * FROM MultiContext.Context;
14840-
SELECT * FROM MultiContext.[Table];
14841-
SELECT * FROM MultiContext.[Column];
14842-
SELECT * FROM MultiContext.StoredProcedure;
14843-
SELECT * FROM MultiContext.[Function];
14844-
SELECT * FROM MultiContext.Enumeration;
14845-
SELECT * FROM MultiContext.ForeignKey;";
14838+
return string.Empty;
1484614839
}
1484714840

1484814841
protected override string EnumSQL(string table, string nameField, string valueField)

Generator.Tests.Integration/SingleDatabaseTestSQLite.cs

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
using System.Data.Common;
1+
using System.IO;
2+
using System.Threading;
23
using Efrpg;
34
using Efrpg.Templates;
45
using Generator.Tests.Common;
56
using NUnit.Framework;
67
using Efrpg.FileManagement;
7-
using Efrpg.Readers;
88
using Microsoft.Data.Sqlite;
99

1010
namespace Generator.Tests.Integration
@@ -15,19 +15,19 @@ namespace Generator.Tests.Integration
1515
[Category(Constants.DbType.SQLite)]
1616
public class SingleDatabaseTestSQLite : SingleDatabaseTestBase
1717
{
18-
// Using a name and a shared cache allows multiple connections to access the same in-memory database
19-
const string ConnectionString = "Data Source=InMemorySample;Mode=Memory;Cache=Shared";
20-
21-
// The in-memory database only persists while a connection is open to it.
22-
// To manage its lifetime, keep one open connection around for as long as you need it.
23-
private readonly SqliteConnection _masterConnection;
24-
25-
public SingleDatabaseTestSQLite()
18+
private static readonly string Filename = Path.Combine(Path.GetTempPath(), "Efrpg.db");
19+
private static readonly string ConnectionString = "Data Source=" + Filename;
20+
21+
[OneTimeSetUp]
22+
public void OneTimeSetUp()
2623
{
27-
_masterConnection = new SqliteConnection(ConnectionString);
28-
_masterConnection.Open();
24+
if (File.Exists(Filename))
25+
File.Delete(Filename);
26+
27+
var connection = new SqliteConnection(ConnectionString);
28+
connection.Open();
2929

30-
var cmd = _masterConnection.CreateCommand();
30+
var cmd = connection.CreateCommand();
3131
cmd.CommandText =
3232
@"
3333
PRAGMA foreign_keys = ON;
@@ -106,6 +106,7 @@ INSERT INTO EfrpgItems (Id, EfrpgId, Test)
106106
(2, 2, 4);
107107
";
108108
cmd.ExecuteNonQuery();
109+
connection.Close();
109110
}
110111

111112
[Test]
@@ -118,13 +119,6 @@ public void ReverseEngineer()
118119
Settings.DatabaseType = DatabaseType.SQLite;
119120
SetupDatabase("MyDbContext", "MyDbContext", TemplateType.EfCore7, GeneratorType.EfCore, ForeignKeyNamingStrategy.Legacy);
120121

121-
//var a = new Microsoft.Data.Sqlite.SqliteFactory();
122-
//var factory = DbProviderFactories.GetFactory("System.Data.SQLite");
123-
var providerName = DatabaseProvider.GetProvider(Settings.DatabaseType);
124-
var factory = DbProviderFactories.GetFactory(providerName);
125-
var databaseReader = DatabaseReaderFactory.Create(factory);
126-
127-
128122
// Act
129123
Run("InMemory", ".SQLite", typeof(EfCoreFileManager), null);
130124

Generator/LanguageMapping/LanguageFactories/SQLiteLanguageFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public IDatabaseToPropertyType Create()
99
switch (Settings.GenerationLanguage)
1010
{
1111
case GenerationLanguage.CSharp:
12-
return new SQLiteToCSharp();
12+
return new SqLiteToCSharp();
1313

1414
case GenerationLanguage.Javascript:
1515
// Not yet supported

Generator/LanguageMapping/SQLiteToCSharp.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Efrpg.LanguageMapping
44
{
5-
public class SQLiteToCSharp : IDatabaseToPropertyType
5+
public class SqLiteToCSharp : IDatabaseToPropertyType
66
{
77
// [Database type] = Language type
88
public Dictionary<string, string> GetMapping()

Generator/Readers/DatabaseReaderFactory.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public static DatabaseReader Create(DbProviderFactory factory)
1616
return new SqlServerDatabaseReader(factory, databaseToPropertyType);
1717

1818
case DatabaseType.SQLite:
19-
return new SQLiteDatabaseReader(factory, databaseToPropertyType);
19+
return new SqLiteDatabaseReader(factory, databaseToPropertyType);
2020

2121
case DatabaseType.SqlCe:
2222
return new SqlServerCeDatabaseReader(factory, databaseToPropertyType);

Generator/Readers/SQLiteDatabaseReader.cs

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
namespace Efrpg.Readers
66
{
7-
public class SQLiteDatabaseReader : DatabaseReader
7+
public class SqLiteDatabaseReader : DatabaseReader
88
{
9-
public SQLiteDatabaseReader(DbProviderFactory factory, IDatabaseToPropertyType databaseToPropertyType)
9+
public SqLiteDatabaseReader(DbProviderFactory factory, IDatabaseToPropertyType databaseToPropertyType)
1010
: base(factory, databaseToPropertyType)
1111
{
1212
StoredProcedureParameterDbType = new Dictionary<string, string>
@@ -166,14 +166,7 @@ protected override string StoredProcedureSQL()
166166

167167
protected override string MultiContextSQL()
168168
{
169-
return @"
170-
SELECT * FROM MultiContext.Context;
171-
SELECT * FROM MultiContext.[Table];
172-
SELECT * FROM MultiContext.[Column];
173-
SELECT * FROM MultiContext.StoredProcedure;
174-
SELECT * FROM MultiContext.[Function];
175-
SELECT * FROM MultiContext.Enumeration;
176-
SELECT * FROM MultiContext.ForeignKey;";
169+
return string.Empty;
177170
}
178171

179172
protected override string EnumSQL(string table, string nameField, string valueField)

0 commit comments

Comments
 (0)