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>