Skip to content

Commit 83c5a4c

Browse files
committed
more fixups
1 parent 810789e commit 83c5a4c

File tree

17 files changed

+89
-46
lines changed

17 files changed

+89
-46
lines changed

global.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"sdk": {
3-
"version": "8.0.100",
3+
"version": "9.0.102",
44
"rollForward": "latestMajor"
55
}
66
}

src/Dapper.AOT.Analyzers/CodeAnalysis/DapperInterceptorGenerator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,11 @@ static string BuildParameterMap(in ParseState ctx, IInvocationOperation op, stri
212212

213213
internal static class FeatureKeys
214214
{
215-
public const string InterceptorsPreviewNamespaces = nameof(InterceptorsPreviewNamespaces),
215+
public const string InterceptorsNamespaces = nameof(InterceptorsNamespaces),
216+
InterceptorsPreviewNamespaces = nameof(InterceptorsPreviewNamespaces),
216217
CodegenNamespace = "Dapper.AOT";
217218
public static KeyValuePair<string, string> InterceptorsPreviewNamespacePair => new(InterceptorsPreviewNamespaces, CodegenNamespace);
219+
public static KeyValuePair<string, string> InterceptorsNamespacePair => new(InterceptorsNamespaces, CodegenNamespace);
218220
}
219221

220222
private static bool CheckPrerequisites(in GenerateState ctx)

src/Dapper.AOT/CommandT.Batch.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System;
33
using System.Collections.Generic;
44
using System.Collections.Immutable;
5+
using System.Data;
56
using System.Data.Common;
67
using System.Diagnostics;
78
using System.Linq;
@@ -222,6 +223,7 @@ private int ExecuteMultiBatch(ReadOnlySpan<TArgs> source, int batchSize) // TODO
222223
{
223224
Debug.Assert(source.Length > 1);
224225
UnifiedCommand batch = default;
226+
bool closeConnection = false;
225227
try
226228
{
227229
foreach (var arg in source)
@@ -231,6 +233,12 @@ private int ExecuteMultiBatch(ReadOnlySpan<TArgs> source, int batchSize) // TODO
231233
}
232234
if (!batch.HasBatch) return 0;
233235

236+
if (connection.State != ConnectionState.Open)
237+
{
238+
connection.Open();
239+
closeConnection = true;
240+
}
241+
234242
var result = batch.AssertBatch.ExecuteNonQuery();
235243

236244
if (commandFactory.RequirePostProcess)
@@ -241,9 +249,14 @@ private int ExecuteMultiBatch(ReadOnlySpan<TArgs> source, int batchSize) // TODO
241249
}
242250
finally
243251
{
252+
if (closeConnection)
253+
{
254+
connection.Close();
255+
}
244256
batch.Cleanup();
245257
}
246258
}
259+
247260
private int ExecuteMultiBatch(IEnumerable<TArgs> source, int batchSize) // TODO: sub-batching
248261
{
249262
if (commandFactory.RequirePostProcess)
@@ -253,6 +266,7 @@ private int ExecuteMultiBatch(IEnumerable<TArgs> source, int batchSize) // TODO:
253266
}
254267

255268
UnifiedCommand batch = default;
269+
bool closeConnection = false;
256270
try
257271
{
258272
foreach (var arg in source)
@@ -262,6 +276,12 @@ private int ExecuteMultiBatch(IEnumerable<TArgs> source, int batchSize) // TODO:
262276
}
263277
if (!batch.HasBatch) return 0;
264278

279+
if (connection.State != ConnectionState.Open)
280+
{
281+
connection.Open();
282+
closeConnection = true;
283+
}
284+
265285
var result = batch.AssertBatch.ExecuteNonQuery();
266286
if (commandFactory.RequirePostProcess)
267287
{
@@ -271,6 +291,10 @@ private int ExecuteMultiBatch(IEnumerable<TArgs> source, int batchSize) // TODO:
271291
}
272292
finally
273293
{
294+
if (closeConnection)
295+
{
296+
connection.Close();
297+
}
274298
batch.Cleanup();
275299
}
276300
}

src/Dapper.AOT/Internal/SyncCommandState.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ private void OnBeforeExecute(DbCommand command)
3838
Debug.Assert(command?.Connection is not null);
3939
Command = command!;
4040
connection = command!.Connection;
41-
41+
4242
if (connection.State != ConnectionState.Open)
4343
{
4444
connection.Open();

src/Dapper.AOT/UnifiedCommand.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
using System.Collections.Generic;
33
using System.Data;
44
using System.Data.Common;
5+
using System.Diagnostics.CodeAnalysis;
6+
using System.Diagnostics;
57
using System.Runtime.CompilerServices;
68

79
namespace Dapper;
@@ -16,8 +18,8 @@ namespace Dapper;
1618
#pragma warning restore IDE0079
1719

1820
public readonly struct UnifiedCommand
19-
2021
{
22+
2123
/// <summary>
2224
/// The <see cref="System.Data.Common.DbCommand"/> associated with the current operation; this may be <c>null</c> for batch commands.
2325
/// </summary>

test/Dapper.AOT.Test.Integration/Setup/IntegrationTestsBase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public abstract class IntegrationTestsBase
2323
.WithFeatures(new[]
2424
{
2525
new KeyValuePair<string, string>("InterceptorsPreviewNamespaces", "$(InterceptorsPreviewNamespaces);Dapper.AOT"),
26+
new KeyValuePair<string, string>("InterceptorsNamespaces", "$(InterceptorsNamespaces);Dapper.AOT"),
2627
});
2728

2829
protected readonly IDbConnection DbConnection;

test/Dapper.AOT.Test/Dapper.AOT.Test.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@
3636
<PackageReference Include="Microsoft.Build.Utilities.Core" />
3737
<PackageReference Include="Oracle.ManagedDataAccess" Condition="'$(TargetFramework)'=='net48'" />
3838
<PackageReference Include="Oracle.ManagedDataAccess.Core" Condition="'$(TargetFramework)'!='net48'" />
39-
<PackageReference Include="System.ComponentModel.Annotations" />
40-
<PackageReference Include="System.Data.Common" />
4139
<PackageReference Include="System.Data.SqlClient" />
4240
<PackageReference Include="Microsoft.Data.SqlClient" />
4341
<PackageReference Include="xunit" />
@@ -61,6 +59,8 @@
6159
</ItemGroup>
6260
<ItemGroup Condition="'$(TargetFramework)'=='net48'">
6361
<PackageReference Include="Npgsql" VersionOverride="8.0.6" />
62+
<PackageReference Include="System.Data.Common" />
63+
<PackageReference Include="System.ComponentModel.Annotations" />
6464
</ItemGroup>
6565

6666
<ItemGroup>

test/Dapper.AOT.Test/DapperApiTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ public void DiscoveredMethodsAreExpected()
2727
var names = string.Join(",", methods);
2828
Log.WriteLine(names);
2929

30-
Assert.Equal("AsList<,AsTableValuedParameter,AsTableValuedParameter<,Execute,ExecuteAsync,ExecuteReader,ExecuteReaderAsync,ExecuteScalar,ExecuteScalar<,ExecuteScalarAsync,ExecuteScalarAsync<,GetRowParser,GetRowParser<,GetTypeName,Parse,Parse<,Query,Query<,QueryAsync,QueryAsync<,QueryFirst,QueryFirst<,QueryFirstAsync,QueryFirstAsync<,QueryFirstOrDefault,QueryFirstOrDefault<,QueryFirstOrDefaultAsync,QueryFirstOrDefaultAsync<,QueryMultiple,QueryMultipleAsync,QuerySingle,QuerySingle<,QuerySingleAsync,QuerySingleAsync<,QuerySingleOrDefault,QuerySingleOrDefault<,QuerySingleOrDefaultAsync,QuerySingleOrDefaultAsync<" + (IsNetFx ? "" : ",QueryUnbufferedAsync,QueryUnbufferedAsync<") + ",ReplaceLiterals,SetTypeName", names);
30+
Assert.Equal("AsList<,AsTableValuedParameter,AsTableValuedParameter<,Execute,ExecuteAsync,ExecuteReader,ExecuteReaderAsync,ExecuteScalar,ExecuteScalar<,ExecuteScalarAsync,ExecuteScalarAsync<,GetRowParser,GetRowParser<,GetTypeName,Parse,Parse<,Query,Query<,QueryAsync,QueryAsync<,QueryFirst,QueryFirst<,QueryFirstAsync,QueryFirstAsync<,QueryFirstOrDefault,QueryFirstOrDefault<,QueryFirstOrDefaultAsync,QueryFirstOrDefaultAsync<,QueryMultiple,QueryMultipleAsync,QuerySingle,QuerySingle<,QuerySingleAsync,QuerySingleAsync<,QuerySingleOrDefault,QuerySingleOrDefault<,QuerySingleOrDefaultAsync,QuerySingleOrDefaultAsync<,QueryUnbufferedAsync,QueryUnbufferedAsync<,ReplaceLiterals,SetTypeName", names);
3131

3232
var candidates = string.Join(",", methods.Where(DapperInterceptorGenerator.IsCandidate));
3333
Log.WriteLine(candidates);
34-
Assert.Equal("Execute,ExecuteAsync,ExecuteReader,ExecuteReaderAsync,ExecuteScalar,ExecuteScalar<,ExecuteScalarAsync,ExecuteScalarAsync<,GetRowParser,GetRowParser<,Query,Query<,QueryAsync,QueryAsync<,QueryFirst,QueryFirst<,QueryFirstAsync,QueryFirstAsync<,QueryFirstOrDefault,QueryFirstOrDefault<,QueryFirstOrDefaultAsync,QueryFirstOrDefaultAsync<,QueryMultiple,QueryMultipleAsync,QuerySingle,QuerySingle<,QuerySingleAsync,QuerySingleAsync<,QuerySingleOrDefault,QuerySingleOrDefault<,QuerySingleOrDefaultAsync,QuerySingleOrDefaultAsync<" + (IsNetFx ? "" : ",QueryUnbufferedAsync,QueryUnbufferedAsync<"), candidates);
34+
Assert.Equal("Execute,ExecuteAsync,ExecuteReader,ExecuteReaderAsync,ExecuteScalar,ExecuteScalar<,ExecuteScalarAsync,ExecuteScalarAsync<,GetRowParser,GetRowParser<,Query,Query<,QueryAsync,QueryAsync<,QueryFirst,QueryFirst<,QueryFirstAsync,QueryFirstAsync<,QueryFirstOrDefault,QueryFirstOrDefault<,QueryFirstOrDefaultAsync,QueryFirstOrDefaultAsync<,QueryMultiple,QueryMultipleAsync,QuerySingle,QuerySingle<,QuerySingleAsync,QuerySingleAsync<,QuerySingleOrDefault,QuerySingleOrDefault<,QuerySingleOrDefaultAsync,QuerySingleOrDefaultAsync<,QueryUnbufferedAsync,QueryUnbufferedAsync<", candidates);
3535
}
3636
}

test/Dapper.AOT.Test/Helpers/TestFramework.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,15 @@ internal static class TestFramework
1313
Enum.GetValues<Net>()
1414
#endif
1515
.Select(static x => x.ToString())
16-
.ToHashSet();
16+
.ToHashSet(StringComparer.OrdinalIgnoreCase);
1717

1818
public static Net DetermineNetVersion()
1919
{
20-
#if NET6_0_OR_GREATER
20+
#if NET9_0_OR_GREATER
21+
return Net.Net9;
22+
#elif NET8_0_OR_GREATER
23+
return Net.Net8;
24+
#elif NET6_0_OR_GREATER
2125
return Net.Net6;
2226
#else
2327
return Net.Net48;
@@ -27,7 +31,9 @@ public static Net DetermineNetVersion()
2731
public enum Net
2832
{
2933
Net48,
30-
Net6
34+
Net6,
35+
Net8,
36+
Net9,
3137
}
3238
}
3339
}

test/Dapper.AOT.Test/InterceptorTests.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ public static IEnumerable<object[]> GetFiles()
2828
if (TestFramework.NetVersions.Contains(fileNetVersionStr))
2929
{
3030
// it has to be the same or greater version
31-
var fileNetVersion = (TestFramework.Net)Enum.Parse(typeof(TestFramework.Net), fileNetVersionStr);
31+
#if NET48
32+
var fileNetVersion = (TestFramework.Net)Enum.Parse(typeof(TestFramework.Net), fileNetVersionStr, true);
33+
#else
34+
var fileNetVersion = Enum.Parse<TestFramework.Net>(fileNetVersionStr, true);
35+
#endif
3236
if (currentNetVersion < fileNetVersion)
3337
{
3438
// skip if current version is lower than specified in the input file name

0 commit comments

Comments
 (0)