Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit f39e2a1

Browse files
committed
Add new ServiceStack.OrmLite.Sqlite.Data proj that uses Microsoft.Data.SQLite
1 parent 1646f83 commit f39e2a1

File tree

7 files changed

+177
-4
lines changed

7 files changed

+177
-4
lines changed

build/build.proj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@
9696
Targets="Build;Pack"
9797
Properties="Configuration=$(Configuration)" />
9898

99+
<!-- ServiceStack.OrmLite.Sqlite.Data -->
100+
<MSBuild Projects="$(BuildSolutionDir)/src/ServiceStack.OrmLite.Sqlite.Data/ServiceStack.OrmLite.Sqlite.Data.csproj"
101+
Targets="Build;Pack"
102+
Properties="Configuration=$(Configuration)" />
103+
99104
<!-- ServiceStack.OrmLite.Sqlite.Windows -->
100105
<MSBuild Projects="$(BuildSolutionDir)/src/ServiceStack.OrmLite.Sqlite.Windows/ServiceStack.OrmLite.Sqlite.Windows.csproj"
101106
Targets="Build;Pack"
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFrameworks>netstandard2.0</TargetFrameworks>
5+
<AssemblyName>ServiceStack.OrmLite.Sqlite</AssemblyName>
6+
<PackageId>ServiceStack.OrmLite.Sqlite.Data</PackageId>
7+
<RootNamespace>ServiceStack.OrmLite.Sqlite</RootNamespace>
8+
<Title>ServiceStack.OrmLite.Sqlite with Microsoft.Data.SQLite</Title>
9+
<PackageDescription>
10+
.NET Standard 2.0 version of ServiceStack.OrmLite.Sqlite that uses Microsoft.Data.SQLite
11+
</PackageDescription>
12+
<PackageTags>SQLite;OrmLite;RDBMS;SQL;POCO;Code-First;ORM;Schema-less;Blobs</PackageTags>
13+
<DefineConstants>$(DefineConstants);ASYNC</DefineConstants>
14+
</PropertyGroup>
15+
16+
<ItemGroup>
17+
<ProjectReference Include="..\ServiceStack.OrmLite\ServiceStack.OrmLite.csproj" />
18+
<PackageReference Include="ServiceStack.Common" Version="$(Version)" />
19+
<PackageReference Include="Microsoft.Data.SQLite" Version="2.2.6" />
20+
</ItemGroup>
21+
22+
<ItemGroup>
23+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\Converters\SqliteBoolConverter.cs">
24+
<Link>Converters\SqliteBoolConverter.cs</Link>
25+
</Compile>
26+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\Converters\SqliteByteArrayConverter.cs">
27+
<Link>Converters\SqliteByteArrayConverter.cs</Link>
28+
</Compile>
29+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\Converters\SqliteCharConverter.cs">
30+
<Link>Converters\SqliteCharConverter.cs</Link>
31+
</Compile>
32+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\Converters\SqliteDateTimeConverter.cs">
33+
<Link>Converters\SqliteDateTimeConverter.cs</Link>
34+
</Compile>
35+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\Converters\SqliteDateTimeOffsetConverter.cs">
36+
<Link>Converters\SqliteDateTimeOffsetConverter.cs</Link>
37+
</Compile>
38+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\Converters\SqliteGuidConverter.cs">
39+
<Link>Converters\SqliteGuidConverter.cs</Link>
40+
</Compile>
41+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\Converters\SqliteStringConverters.cs">
42+
<Link>Converters\SqliteStringConverters.cs</Link>
43+
</Compile>
44+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\SqliteDialect.cs">
45+
<Link>SqliteDialect.cs</Link>
46+
</Compile>
47+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\SqliteExpression.cs">
48+
<Link>SqliteExpression.cs</Link>
49+
</Compile>
50+
<Compile Include="..\ServiceStack.OrmLite.Sqlite\SqliteOrmLiteDialectProviderBase.cs">
51+
<Link>SqliteOrmLiteDialectProviderBase.cs</Link>
52+
</Compile>
53+
</ItemGroup>
54+
55+
</Project>
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System.Data;
2+
using Microsoft.Data.Sqlite;
3+
4+
namespace ServiceStack.OrmLite.Sqlite
5+
{
6+
public class SqliteOrmLiteDialectProvider : SqliteOrmLiteDialectProviderBase
7+
{
8+
public static SqliteOrmLiteDialectProvider Instance = new SqliteOrmLiteDialectProvider();
9+
10+
protected override IDbConnection CreateConnection(string connectionString)
11+
{
12+
return new SqliteConnection(connectionString);
13+
}
14+
15+
public override IDbDataParameter CreateParam()
16+
{
17+
return new SqliteParameter();
18+
}
19+
}
20+
}

src/ServiceStack.OrmLite.Sqlite/Converters/SqliteGuidConverter.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@ namespace ServiceStack.OrmLite.Sqlite.Converters
77
{
88
public class SqliteGuidConverter : GuidConverter
99
{
10-
public override string ColumnDefinition
11-
{
12-
get { return "CHAR(36)"; }
13-
}
10+
public override string ColumnDefinition => "CHAR(36)";
1411

1512
public override string ToQuotedString(Type fieldType, object value)
1613
{

src/ServiceStack.OrmLite.sln

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{6CEB3EDE
1818
ServiceStack.OrmLite.Sqlite\ServiceStack.OrmLite.Sqlite.Core.csproj = ServiceStack.OrmLite.Sqlite\ServiceStack.OrmLite.Sqlite.Core.csproj
1919
ServiceStack.OrmLite.SqlServer\ServiceStack.OrmLite.SqlServer.Core.csproj = ServiceStack.OrmLite.SqlServer\ServiceStack.OrmLite.SqlServer.Core.csproj
2020
..\build\build-core.proj = ..\build\build-core.proj
21+
ServiceStack.OrmLite.Sqlite.Data\ServiceStack.OrmLite.Sqlite.Data.csproj = ServiceStack.OrmLite.Sqlite.Data\ServiceStack.OrmLite.Sqlite.Data.csproj
2122
EndProjectSection
2223
EndProject
2324
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ServiceStack.OrmLite.Sqlite", "ServiceStack.OrmLite.Sqlite\ServiceStack.OrmLite.Sqlite.csproj", "{CF68A37D-D071-469D-AE04-68594CB95382}"
@@ -73,6 +74,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceStack.OrmLite.T4", "
7374
EndProject
7475
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceStack.OrmLite.Tests.Setup", "..\tests\ServiceStack.OrmLite.Tests.Setup\ServiceStack.OrmLite.Tests.Setup.csproj", "{74A4B761-974C-4AE8-88BE-7B29460D80B4}"
7576
EndProject
77+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServiceStack.OrmLite.Sqlite.Data", "ServiceStack.OrmLite.Sqlite.Data\ServiceStack.OrmLite.Sqlite.Data.csproj", "{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}"
78+
EndProject
7679
Global
7780
GlobalSection(SolutionConfigurationPlatforms) = preSolution
7881
Debug|Any CPU = Debug|Any CPU
@@ -428,6 +431,24 @@ Global
428431
{74A4B761-974C-4AE8-88BE-7B29460D80B4}.Release|Mixed Platforms.Build.0 = Release|Any CPU
429432
{74A4B761-974C-4AE8-88BE-7B29460D80B4}.Release|x86.ActiveCfg = Release|Any CPU
430433
{74A4B761-974C-4AE8-88BE-7B29460D80B4}.Release|x86.Build.0 = Release|Any CPU
434+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
435+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Debug|Any CPU.Build.0 = Debug|Any CPU
436+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
437+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
438+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Debug|x86.ActiveCfg = Debug|Any CPU
439+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Debug|x86.Build.0 = Debug|Any CPU
440+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Default|Any CPU.ActiveCfg = Debug|Any CPU
441+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Default|Any CPU.Build.0 = Debug|Any CPU
442+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Default|Mixed Platforms.ActiveCfg = Debug|Any CPU
443+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Default|Mixed Platforms.Build.0 = Debug|Any CPU
444+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Default|x86.ActiveCfg = Debug|Any CPU
445+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Default|x86.Build.0 = Debug|Any CPU
446+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Release|Any CPU.ActiveCfg = Release|Any CPU
447+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Release|Any CPU.Build.0 = Release|Any CPU
448+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
449+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Release|Mixed Platforms.Build.0 = Release|Any CPU
450+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Release|x86.ActiveCfg = Release|Any CPU
451+
{05F1FC33-8DF2-457D-820D-3C47CCD6D82E}.Release|x86.Build.0 = Release|Any CPU
431452
EndGlobalSection
432453
GlobalSection(SolutionProperties) = preSolution
433454
HideSolutionNode = FALSE
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
using System;
2+
using NUnit.Framework;
3+
using ServiceStack.DataAnnotations;
4+
using ServiceStack.OrmLite.Converters;
5+
6+
namespace ServiceStack.OrmLite.Tests.Issues
7+
{
8+
public class StringConverterGuidIssue : OrmLiteTestBase
9+
{
10+
[Alias("location")]
11+
public class DbPoco
12+
{
13+
[Alias("poco_id"), PrimaryKey, AutoIncrement]
14+
public int Id { get; set; }
15+
16+
[Alias("poco_uuid")]
17+
public Guid UniqueId { get; set; } = Guid.NewGuid();
18+
}
19+
20+
/// <summary>
21+
/// Example Dto with Guid as a string.
22+
/// </summary>
23+
public class Dto
24+
{
25+
public string Id { get; set; }
26+
27+
// Fails when using ServiceStack.OrmLite.Sqlite / System.Data.SQLite.Core due to reader.GetValue() on Guid:
28+
// https://forums.servicestack.net/t/ormlite-sqllite-stringconverter-behavior-change-5-4-5-6/
29+
// Passes when using ServiceStack.OrmLite.Sqlite.Data / Microsoft.Data.SQLite
30+
public string UniqueId { get; set; }
31+
}
32+
33+
public class MySqliteStringConverter : StringConverter
34+
{
35+
public override object FromDbValue(Type fieldType, object value)
36+
{
37+
object result;
38+
39+
if (value is byte[] byteValue)
40+
{
41+
var res = new Guid(byteValue).ToString();
42+
result = res;
43+
}
44+
else
45+
{
46+
result = base.FromDbValue(fieldType, value);
47+
}
48+
49+
return result;
50+
}
51+
}
52+
53+
[Test]
54+
public void Does_convert_Guid_with_Custom_String_Converter()
55+
{
56+
var dialectProvider = SqliteDialect.Provider;
57+
dialectProvider.RegisterConverter<string>(new MySqliteStringConverter());
58+
var dbFactory = new OrmLiteConnectionFactory(":memory:", dialectProvider);
59+
60+
var uuid = Guid.NewGuid();
61+
using (var db = dbFactory.Open())
62+
{
63+
db.CreateTable(false, typeof(DbPoco));
64+
db.Insert(new DbPoco { Id = 1, UniqueId = uuid });
65+
66+
var result = db.Single<Dto>(db.From<DbPoco>().Where(poco => poco.UniqueId == uuid));
67+
68+
Assert.That(result.UniqueId, Is.EqualTo(uuid.ToString()));
69+
// Assert.That(result.UniqueId, Is.EqualTo(uuid));
70+
}
71+
}
72+
73+
}
74+
}

tests/ServiceStack.OrmLite.SqliteTests/ServiceStack.OrmLite.SqliteTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
<PackageReference Include="NUnit3TestAdapter" Version="3.10.0" />
1717
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
1818
<PackageReference Include="NUnit" Version="3.10.1" />
19+
<PackageReference Include="System.Data.SQLite.Core" Version="1.0.111" />
1920
</ItemGroup>
2021

2122
<ItemGroup>

0 commit comments

Comments
 (0)