Skip to content

Commit ef48e1d

Browse files
authored
Enable DapperAOT (#2079)
* Dapper usage: - enable Dapper.AOT - enable command caching - enable strict type mapping - use explicit column hints * support older SDK interceptor usage
1 parent 48ec6a2 commit ef48e1d

File tree

15 files changed

+25
-2
lines changed

15 files changed

+25
-2
lines changed

build/dependencies.props

+2-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@
4141
<MicrosoftIISTestingVersion90>9.0.0-*</MicrosoftIISTestingVersion90>
4242
<MicrosoftIISTestingVersion100>10.0.0-*</MicrosoftIISTestingVersion100>
4343

44-
<DapperVersion>2.1.35</DapperVersion>
44+
<DapperVersion>2.1.66</DapperVersion>
45+
<DapperAotVersion>1.0.48</DapperAotVersion>
4546
<RazorSlicesVersion>0.8.1</RazorSlicesVersion>
4647
<SystemCommandLineVersion>2.0.0-beta4.22272.1</SystemCommandLineVersion>
4748
<MicrosoftCrankEventSourcesVersion>0.2.0-alpha.24114.2</MicrosoftCrankEventSourcesVersion>

src/Benchmarks/Benchmarks.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
<ItemGroup>
2929
<PackageReference Include="Dapper" Version="$(DapperVersion)" />
30+
<PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" />
3031
</ItemGroup>
3132

3233
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">

src/Benchmarks/Data/DapperDb.cs

+3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
namespace Benchmarks.Data
1414
{
15+
[DapperAot, CacheCommand, StrictTypes]
1516
public class DapperDb : IDb
1617
{
1718
private static readonly Comparison<World> WorldSortComparison = (a, b) => a.Id.CompareTo(b.Id);
@@ -38,6 +39,7 @@ public async Task<World> LoadSingleQueryRow()
3839
}
3940
}
4041

42+
[QueryColumns("id", "randomnumber")]
4143
Task<World> ReadSingleRow(DbConnection db)
4244
{
4345
return db.QueryFirstOrDefaultAsync<World>(
@@ -92,6 +94,7 @@ public async Task<World[]> LoadMultipleUpdatesRows(int count)
9294

9395
}
9496

97+
[QueryColumns("id", "message")]
9598
public async Task<IEnumerable<FortuneUtf16>> LoadFortunesRows()
9699
{
97100
List<FortuneUtf16> result;

src/Benchmarks/Data/World.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System.ComponentModel.DataAnnotations.Schema;
55
using System.Runtime.Serialization;
6+
using Dapper;
67

78
namespace Benchmarks.Data
89
{
@@ -13,7 +14,7 @@ public class World
1314
public int Id { get; set; }
1415

1516
[IgnoreDataMember]
16-
[NotMapped]
17+
[NotMapped, DbValue(Ignore = true)]
1718
public int _Id { get; set; }
1819

1920
[Column("randomnumber")]

src/BenchmarksApps/TechEmpower/BlazorSSR/BlazorSSR.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
<ItemGroup>
1212
<PackageReference Include="Dapper" Version="$(DapperVersion)" />
13+
<PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" />
1314
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="$(NpgsqlEntityFrameworkCorePostgreSQLVersion80)" />
1415
<PackageReference Include="Npgsql" Version="$(NpgsqlVersion80)" />
1516
</ItemGroup>

src/BenchmarksApps/TechEmpower/BlazorSSR/Database/Db.cs

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public Db(AppSettings appSettings)
1717
_dataSource = new NpgsqlSlimDataSourceBuilder(appSettings.ConnectionString).Build();
1818
}
1919

20+
[DapperAot, CacheCommand, StrictTypes, QueryColumns("id", "message")]
2021
public async Task<List<Fortune>> LoadFortunesRowsDapper()
2122
{
2223
await using var connection = _dataSource.CreateConnection();

src/BenchmarksApps/TechEmpower/Minimal/Database/Db.cs

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Minimal.Database;
66

7+
[DapperAot, CacheCommand, StrictTypes]
78
public class Db
89
{
910
private static readonly Comparison<Fortune> FortuneSortComparison = (a, b) => string.CompareOrdinal(a.Message, b.Message);
@@ -28,6 +29,7 @@ public async Task<World> LoadSingleQueryRow()
2829
return await ReadSingleRow(db);
2930
}
3031

32+
[QueryColumns("id", "randomnumber")]
3133
static Task<World> ReadSingleRow(DbConnection db)
3234
{
3335
return db.QueryFirstOrDefaultAsync<World>(
@@ -83,6 +85,7 @@ public async Task<World[]> LoadMultipleUpdatesRows(int count)
8385
return results;
8486
}
8587

88+
[QueryColumns("id", "message")]
8689
public async Task<List<Fortune>> LoadFortunesRows()
8790
{
8891
List<Fortune> result;

src/BenchmarksApps/TechEmpower/Minimal/Minimal.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<ItemGroup>
1212
<PackageReference Include="Npgsql" Version="$(NpgsqlVersion80)" />
1313
<PackageReference Include="Dapper" Version="$(DapperVersion)" />
14+
<PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" />
1415
<PackageReference Include="RazorSlices" Version="$(RazorSlicesVersion)" />
1516
</ItemGroup>
1617

src/BenchmarksApps/TechEmpower/Mvc/Database/DbDapper.cs

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public DbDapper(AppSettings appSettings)
2121
#endif
2222
}
2323

24+
[DapperAot, CacheCommand, StrictTypes, QueryColumns("id", "message")]
2425
public async Task<List<Fortune>> LoadFortunesRowsDapper()
2526
{
2627
await using var connection = _dataSource.CreateConnection();

src/BenchmarksApps/TechEmpower/Mvc/Mvc.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="Dapper" Version="$(DapperVersion)" />
12+
<PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" />
1213
</ItemGroup>
1314

1415
<ItemGroup Condition="$(TargetFramework) == 'net8.0'">

src/BenchmarksApps/TechEmpower/PlatformBenchmarks/Data/DapperDb.cs

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public sealed class DapperDb
1212
public DapperDb(AppSettings appSettings)
1313
=> _connectionString = appSettings.ConnectionString;
1414

15+
[DapperAot, CacheCommand, StrictTypes, QueryColumns("id", "message")]
1516
public async Task<List<FortuneUtf16>> LoadFortunesRows()
1617
{
1718
List<FortuneUtf16> result;

src/BenchmarksApps/TechEmpower/PlatformBenchmarks/PlatformBenchmarks.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
<ItemGroup>
2121
<PackageReference Include="Dapper" Version="$(DapperVersion)" />
22+
<PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" />
2223
<PackageReference Include="RazorSlices" Version="$(RazorSlicesVersion)" />
2324
</ItemGroup>
2425

src/BenchmarksApps/TechEmpower/RazorPages/Database/Db.cs

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public Db(AppSettings appSettings)
2121
#endif
2222
}
2323

24+
[DapperAot, CacheCommand, StrictTypes, QueryColumns("id", "message")]
2425
public async Task<List<Fortune>> LoadFortunesRowsDapper()
2526
{
2627
await using var connection = _dataSource.CreateConnection();

src/BenchmarksApps/TechEmpower/RazorPages/RazorPages.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
<ItemGroup>
1212
<PackageReference Include="Dapper" Version="$(DapperVersion)" />
13+
<PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" />
1314
</ItemGroup>
1415

1516
<ItemGroup Condition="$(TargetFramework) == 'net8.0'">

src/Directory.Build.props

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
<!-- Create database build configurations -->
1717
<Configurations>Debug;Release;Debug_Database;Release_Database</Configurations>
1818
<IsDatabase Condition="$(Configuration.EndsWith('_Database'))">true</IsDatabase>
19+
20+
<!-- enable interceptors language feature for Dapper globally (this by itself doesn't add AOT) -->
21+
<InterceptorsNamespaces>$(InterceptorsNamespaces);Dapper.AOT</InterceptorsNamespaces>
22+
<!-- for parity on down-level SDKs -->
23+
<InterceptorsPreviewNamespaces>$(InterceptorsNamespaces)</InterceptorsPreviewNamespaces>
1924
</PropertyGroup>
2025

2126
</Project>

0 commit comments

Comments
 (0)