diff --git a/build/dependencies.props b/build/dependencies.props index ee1bbee90..b79b7bbce 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -41,7 +41,8 @@ <MicrosoftIISTestingVersion90>9.0.0-*</MicrosoftIISTestingVersion90> <MicrosoftIISTestingVersion100>10.0.0-*</MicrosoftIISTestingVersion100> - <DapperVersion>2.1.35</DapperVersion> + <DapperVersion>2.1.66</DapperVersion> + <DapperAotVersion>1.0.48</DapperAotVersion> <RazorSlicesVersion>0.8.1</RazorSlicesVersion> <SystemCommandLineVersion>2.0.0-beta4.22272.1</SystemCommandLineVersion> <MicrosoftCrankEventSourcesVersion>0.2.0-alpha.24114.2</MicrosoftCrankEventSourcesVersion> diff --git a/src/Benchmarks/Benchmarks.csproj b/src/Benchmarks/Benchmarks.csproj index 329c6f15d..a3e0d2085 100644 --- a/src/Benchmarks/Benchmarks.csproj +++ b/src/Benchmarks/Benchmarks.csproj @@ -27,6 +27,7 @@ <ItemGroup> <PackageReference Include="Dapper" Version="$(DapperVersion)" /> + <PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" /> </ItemGroup> <ItemGroup Condition="'$(TargetFramework)' == 'net6.0'"> diff --git a/src/Benchmarks/Data/DapperDb.cs b/src/Benchmarks/Data/DapperDb.cs index e21a18f5f..c2d432c3f 100644 --- a/src/Benchmarks/Data/DapperDb.cs +++ b/src/Benchmarks/Data/DapperDb.cs @@ -12,6 +12,7 @@ namespace Benchmarks.Data { + [DapperAot, CacheCommand, StrictTypes] public class DapperDb : IDb { private static readonly Comparison<World> WorldSortComparison = (a, b) => a.Id.CompareTo(b.Id); @@ -38,6 +39,7 @@ public async Task<World> LoadSingleQueryRow() } } + [QueryColumns("id", "randomnumber")] Task<World> ReadSingleRow(DbConnection db) { return db.QueryFirstOrDefaultAsync<World>( @@ -92,6 +94,7 @@ public async Task<World[]> LoadMultipleUpdatesRows(int count) } + [QueryColumns("id", "message")] public async Task<IEnumerable<FortuneUtf16>> LoadFortunesRows() { List<FortuneUtf16> result; diff --git a/src/Benchmarks/Data/World.cs b/src/Benchmarks/Data/World.cs index e83d07c58..a506cc640 100644 --- a/src/Benchmarks/Data/World.cs +++ b/src/Benchmarks/Data/World.cs @@ -3,6 +3,7 @@ using System.ComponentModel.DataAnnotations.Schema; using System.Runtime.Serialization; +using Dapper; namespace Benchmarks.Data { @@ -13,7 +14,7 @@ public class World public int Id { get; set; } [IgnoreDataMember] - [NotMapped] + [NotMapped, DbValue(Ignore = true)] public int _Id { get; set; } [Column("randomnumber")] diff --git a/src/BenchmarksApps/TechEmpower/BlazorSSR/BlazorSSR.csproj b/src/BenchmarksApps/TechEmpower/BlazorSSR/BlazorSSR.csproj index 8c0fa575a..da7508b23 100644 --- a/src/BenchmarksApps/TechEmpower/BlazorSSR/BlazorSSR.csproj +++ b/src/BenchmarksApps/TechEmpower/BlazorSSR/BlazorSSR.csproj @@ -10,6 +10,7 @@ <ItemGroup> <PackageReference Include="Dapper" Version="$(DapperVersion)" /> + <PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" /> <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="$(NpgsqlEntityFrameworkCorePostgreSQLVersion80)" /> <PackageReference Include="Npgsql" Version="$(NpgsqlVersion80)" /> </ItemGroup> diff --git a/src/BenchmarksApps/TechEmpower/BlazorSSR/Database/Db.cs b/src/BenchmarksApps/TechEmpower/BlazorSSR/Database/Db.cs index 0a49d6098..f6a52d1fa 100644 --- a/src/BenchmarksApps/TechEmpower/BlazorSSR/Database/Db.cs +++ b/src/BenchmarksApps/TechEmpower/BlazorSSR/Database/Db.cs @@ -17,6 +17,7 @@ public Db(AppSettings appSettings) _dataSource = new NpgsqlSlimDataSourceBuilder(appSettings.ConnectionString).Build(); } + [DapperAot, CacheCommand, StrictTypes, QueryColumns("id", "message")] public async Task<List<Fortune>> LoadFortunesRowsDapper() { await using var connection = _dataSource.CreateConnection(); diff --git a/src/BenchmarksApps/TechEmpower/Minimal/Database/Db.cs b/src/BenchmarksApps/TechEmpower/Minimal/Database/Db.cs index 84bb79e79..84cae8d35 100644 --- a/src/BenchmarksApps/TechEmpower/Minimal/Database/Db.cs +++ b/src/BenchmarksApps/TechEmpower/Minimal/Database/Db.cs @@ -4,6 +4,7 @@ namespace Minimal.Database; +[DapperAot, CacheCommand, StrictTypes] public class Db { private static readonly Comparison<Fortune> FortuneSortComparison = (a, b) => string.CompareOrdinal(a.Message, b.Message); @@ -28,6 +29,7 @@ public async Task<World> LoadSingleQueryRow() return await ReadSingleRow(db); } + [QueryColumns("id", "randomnumber")] static Task<World> ReadSingleRow(DbConnection db) { return db.QueryFirstOrDefaultAsync<World>( @@ -83,6 +85,7 @@ public async Task<World[]> LoadMultipleUpdatesRows(int count) return results; } + [QueryColumns("id", "message")] public async Task<List<Fortune>> LoadFortunesRows() { List<Fortune> result; diff --git a/src/BenchmarksApps/TechEmpower/Minimal/Minimal.csproj b/src/BenchmarksApps/TechEmpower/Minimal/Minimal.csproj index 646892e45..31508768b 100644 --- a/src/BenchmarksApps/TechEmpower/Minimal/Minimal.csproj +++ b/src/BenchmarksApps/TechEmpower/Minimal/Minimal.csproj @@ -11,6 +11,7 @@ <ItemGroup> <PackageReference Include="Npgsql" Version="$(NpgsqlVersion80)" /> <PackageReference Include="Dapper" Version="$(DapperVersion)" /> + <PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" /> <PackageReference Include="RazorSlices" Version="$(RazorSlicesVersion)" /> </ItemGroup> diff --git a/src/BenchmarksApps/TechEmpower/Mvc/Database/DbDapper.cs b/src/BenchmarksApps/TechEmpower/Mvc/Database/DbDapper.cs index 81c82c6e5..0f0dd2ecf 100644 --- a/src/BenchmarksApps/TechEmpower/Mvc/Database/DbDapper.cs +++ b/src/BenchmarksApps/TechEmpower/Mvc/Database/DbDapper.cs @@ -21,6 +21,7 @@ public DbDapper(AppSettings appSettings) #endif } + [DapperAot, CacheCommand, StrictTypes, QueryColumns("id", "message")] public async Task<List<Fortune>> LoadFortunesRowsDapper() { await using var connection = _dataSource.CreateConnection(); diff --git a/src/BenchmarksApps/TechEmpower/Mvc/Mvc.csproj b/src/BenchmarksApps/TechEmpower/Mvc/Mvc.csproj index f7b308ee1..81251276e 100644 --- a/src/BenchmarksApps/TechEmpower/Mvc/Mvc.csproj +++ b/src/BenchmarksApps/TechEmpower/Mvc/Mvc.csproj @@ -9,6 +9,7 @@ <ItemGroup> <PackageReference Include="Dapper" Version="$(DapperVersion)" /> + <PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" /> </ItemGroup> <ItemGroup Condition="$(TargetFramework) == 'net8.0'"> diff --git a/src/BenchmarksApps/TechEmpower/PlatformBenchmarks/Data/DapperDb.cs b/src/BenchmarksApps/TechEmpower/PlatformBenchmarks/Data/DapperDb.cs index 4749d5038..5669c1190 100644 --- a/src/BenchmarksApps/TechEmpower/PlatformBenchmarks/Data/DapperDb.cs +++ b/src/BenchmarksApps/TechEmpower/PlatformBenchmarks/Data/DapperDb.cs @@ -12,6 +12,7 @@ public sealed class DapperDb public DapperDb(AppSettings appSettings) => _connectionString = appSettings.ConnectionString; + [DapperAot, CacheCommand, StrictTypes, QueryColumns("id", "message")] public async Task<List<FortuneUtf16>> LoadFortunesRows() { List<FortuneUtf16> result; diff --git a/src/BenchmarksApps/TechEmpower/PlatformBenchmarks/PlatformBenchmarks.csproj b/src/BenchmarksApps/TechEmpower/PlatformBenchmarks/PlatformBenchmarks.csproj index d7c3442de..837154065 100644 --- a/src/BenchmarksApps/TechEmpower/PlatformBenchmarks/PlatformBenchmarks.csproj +++ b/src/BenchmarksApps/TechEmpower/PlatformBenchmarks/PlatformBenchmarks.csproj @@ -19,6 +19,7 @@ <ItemGroup> <PackageReference Include="Dapper" Version="$(DapperVersion)" /> + <PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" /> <PackageReference Include="RazorSlices" Version="$(RazorSlicesVersion)" /> </ItemGroup> diff --git a/src/BenchmarksApps/TechEmpower/RazorPages/Database/Db.cs b/src/BenchmarksApps/TechEmpower/RazorPages/Database/Db.cs index 891215407..45541b4a2 100644 --- a/src/BenchmarksApps/TechEmpower/RazorPages/Database/Db.cs +++ b/src/BenchmarksApps/TechEmpower/RazorPages/Database/Db.cs @@ -21,6 +21,7 @@ public Db(AppSettings appSettings) #endif } + [DapperAot, CacheCommand, StrictTypes, QueryColumns("id", "message")] public async Task<List<Fortune>> LoadFortunesRowsDapper() { await using var connection = _dataSource.CreateConnection(); diff --git a/src/BenchmarksApps/TechEmpower/RazorPages/RazorPages.csproj b/src/BenchmarksApps/TechEmpower/RazorPages/RazorPages.csproj index a72c2b522..1f374566a 100644 --- a/src/BenchmarksApps/TechEmpower/RazorPages/RazorPages.csproj +++ b/src/BenchmarksApps/TechEmpower/RazorPages/RazorPages.csproj @@ -10,6 +10,7 @@ <ItemGroup> <PackageReference Include="Dapper" Version="$(DapperVersion)" /> + <PackageReference Include="Dapper.AOT" Version="$(DapperAotVersion)" /> </ItemGroup> <ItemGroup Condition="$(TargetFramework) == 'net8.0'"> diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 495f6cc6d..b020b1c07 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -16,6 +16,11 @@ <!-- Create database build configurations --> <Configurations>Debug;Release;Debug_Database;Release_Database</Configurations> <IsDatabase Condition="$(Configuration.EndsWith('_Database'))">true</IsDatabase> + + <!-- enable interceptors language feature for Dapper globally (this by itself doesn't add AOT) --> + <InterceptorsNamespaces>$(InterceptorsNamespaces);Dapper.AOT</InterceptorsNamespaces> + <!-- for parity on down-level SDKs --> + <InterceptorsPreviewNamespaces>$(InterceptorsNamespaces)</InterceptorsPreviewNamespaces> </PropertyGroup> </Project>