From 7e31bf0f35de2fc7892bc4e253dfaf5fd05459cd Mon Sep 17 00:00:00 2001 From: Daniel Cazzulino <daniel@cazzulino.com> Date: Sat, 21 Dec 2024 04:06:06 -0300 Subject: [PATCH] Add simple dapper+sqlite console app demo --- src/Sample/ConsoleDb/ConsoleDb.csproj | 24 +++++++++++++++++++++ src/Sample/ConsoleDb/Program.cs | 29 ++++++++++++++++++++++++++ src/Sample/ConsoleDb/dapper.db | Bin 0 -> 12288 bytes src/Sample/Sample.sln | 6 ++++++ 4 files changed, 59 insertions(+) create mode 100644 src/Sample/ConsoleDb/ConsoleDb.csproj create mode 100644 src/Sample/ConsoleDb/Program.cs create mode 100644 src/Sample/ConsoleDb/dapper.db diff --git a/src/Sample/ConsoleDb/ConsoleDb.csproj b/src/Sample/ConsoleDb/ConsoleDb.csproj new file mode 100644 index 0000000..01160c0 --- /dev/null +++ b/src/Sample/ConsoleDb/ConsoleDb.csproj @@ -0,0 +1,24 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <OutputType>Exe</OutputType> + <TargetFramework>net8.0</TargetFramework> + <ImplicitUsings>enable</ImplicitUsings> + <Nullable>enable</Nullable> + <RestoreSources>https://api.nuget.org/v3/index.json;$(PackageOutputPath)</RestoreSources> + <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="SQLitePCLRaw.bundle_e_sqlite3" Version="2.1.10" /> + <PackageReference Include="StructId" Version="42.*" /> + <PackageReference Include="Microsoft.Data.Sqlite.Core" Version="8.0.11" /> + <PackageReference Include="Ulid" Version="1.3.4" /> + <PackageReference Include="Dapper" Version="2.1.35" /> + </ItemGroup> + + <ItemGroup> + <None Update="dapper.db" CopyToOutputDirectory="Always" /> + </ItemGroup> + +</Project> diff --git a/src/Sample/ConsoleDb/Program.cs b/src/Sample/ConsoleDb/Program.cs new file mode 100644 index 0000000..a50b83e --- /dev/null +++ b/src/Sample/ConsoleDb/Program.cs @@ -0,0 +1,29 @@ +using ConsoleDb; +using Dapper; +using Microsoft.Data.Sqlite; + +SQLitePCL.Batteries.Init(); + +using var connection = new SqliteConnection("Data Source=dapper.db") + .UseStructId(); + +connection.Open(); + +// Seed data +var productId = Ulid.NewUlid(); +var product = new Product(new ProductId(productId), "Product"); + +connection.Execute("INSERT INTO Products (Id, Name) VALUES (@Id, @Name)", new Product(ProductId.New(), "Product1")); +connection.Execute("INSERT INTO Products (Id, Name) VALUES (@Id, @Name)", product); +connection.Execute("INSERT INTO Products (Id, Name) VALUES (@Id, @Name)", new Product(ProductId.New(), "Product2")); + +// showcase we can query by the underlying ulid +var product2 = connection.QueryFirst<Product>("SELECT * FROM Products WHERE Id = @Id", new { Id = productId }); +var product3 = connection.QueryFirst<Product>("SELECT * FROM Products WHERE Id = @Id", new { Id = new ProductId(productId) }); + +Console.WriteLine("Found saved product by value: " + product.Equals(product2)); +Console.WriteLine("Found saved product by id: " + product.Equals(product3)); + +public readonly partial record struct ProductId : IStructId<Ulid>; + +public record Product(ProductId Id, string Name); \ No newline at end of file diff --git a/src/Sample/ConsoleDb/dapper.db b/src/Sample/ConsoleDb/dapper.db new file mode 100644 index 0000000000000000000000000000000000000000..b0d7cd6cf057b55e36759e077f439ab7479ab227 GIT binary patch literal 12288 zcmeI#&r8EF6u|MMiVk6Px19>_s33~?4_HSI!&+yp;7(n&84NayTL)hK>-=B*3q0CP za^894`yfAFLIU~Z^qwA*Sz~2dFBfGa*Q%$qRyQI_Dc!b%w)t@Rp-<Y;<=aB5i|J1{ z{8d3XQQ;)~-gba}1Q0*~0R#|0009ILKmY**c2U6U<9-zBuc#?s=XSKLtMyy6@?$W_ zOq?6Z<J-iDUzO8gCAoRYWt0u?<7_N<W-RGLF6ncUoJ(3R?Ek)BJG%^y`h!TT*?VO_ zS0D4XrZ38MQ*ZLZUtC=InXBtN&a>;fp6dt%5I_I{1Q0*~0R#|0009IL*jIrQ_b}@J bef?hEg#ZEwAb<b@2q1s}0tg_0z((K?L0LKv literal 0 HcmV?d00001 diff --git a/src/Sample/Sample.sln b/src/Sample/Sample.sln index 943a9df..261b53c 100644 --- a/src/Sample/Sample.sln +++ b/src/Sample/Sample.sln @@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MinimalApi", "MinimalApi\Mi EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MvcWebApp", "MvcWebApp\MvcWebApp.csproj", "{98DCCA61-3848-967E-E422-1DEDB4CB8569}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleDb", "ConsoleDb\ConsoleDb.csproj", "{A66CF326-8BE8-2BD1-25F7-0D7960DFAFC6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -27,6 +29,10 @@ Global {98DCCA61-3848-967E-E422-1DEDB4CB8569}.Debug|Any CPU.Build.0 = Debug|Any CPU {98DCCA61-3848-967E-E422-1DEDB4CB8569}.Release|Any CPU.ActiveCfg = Release|Any CPU {98DCCA61-3848-967E-E422-1DEDB4CB8569}.Release|Any CPU.Build.0 = Release|Any CPU + {A66CF326-8BE8-2BD1-25F7-0D7960DFAFC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A66CF326-8BE8-2BD1-25F7-0D7960DFAFC6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A66CF326-8BE8-2BD1-25F7-0D7960DFAFC6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A66CF326-8BE8-2BD1-25F7-0D7960DFAFC6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE