|
8 | 8 | //------------------------------------------------------------------------------ |
9 | 9 |
|
10 | 10 |
|
| 11 | +using System.Collections.Generic; |
11 | 12 | using NHibernate.Driver; |
12 | 13 | using NHibernate.Linq; |
13 | 14 | using NUnit.Framework; |
@@ -205,7 +206,7 @@ public async Task CanUseFutureQueryWithAnonymousTypeAsync() |
205 | 206 | public async Task CanUseFutureFetchQueryAsync() |
206 | 207 | { |
207 | 208 | IgnoreThisTestIfMultipleQueriesArentSupportedByDriver(); |
208 | | - |
| 209 | + |
209 | 210 | using (var s = Sfi.OpenSession()) |
210 | 211 | using (var tx = s.BeginTransaction()) |
211 | 212 | { |
@@ -279,7 +280,7 @@ public async Task TwoFuturesRunInTwoRoundTripsAsync() |
279 | 280 | public async Task CanCombineSingleFutureValueWithEnumerableFuturesAsync() |
280 | 281 | { |
281 | 282 | IgnoreThisTestIfMultipleQueriesArentSupportedByDriver(); |
282 | | - |
| 283 | + |
283 | 284 | using (var s = Sfi.OpenSession()) |
284 | 285 | { |
285 | 286 | var persons = s.Query<Person>() |
@@ -364,12 +365,52 @@ public async Task CanExecuteMultipleQueriesOnSameExpressionAsync() |
364 | 365 | var events = logSpy.Appender.GetEvents(); |
365 | 366 | Assert.AreEqual(1, events.Length); |
366 | 367 | var wholeLog = logSpy.GetWholeLog(); |
367 | | - string paramPrefix = ((DriverBase)Sfi.ConnectionProvider.Driver).NamedPrefix; |
| 368 | + string paramPrefix = ((DriverBase) Sfi.ConnectionProvider.Driver).NamedPrefix; |
368 | 369 | Assert.That( |
369 | 370 | wholeLog, |
370 | 371 | Does.Contain(paramPrefix + "p0 = 1 [Type: Int32 (0:0:0)], " + paramPrefix + "p1 = 2 [Type: Int32 (0:0:0)]")); |
371 | 372 | } |
372 | 373 | } |
373 | 374 | } |
| 375 | + |
| 376 | + [Test] |
| 377 | + public async Task UsingManyParametersAndQueries_DoesNotCauseParameterNameCollisionsAsync() |
| 378 | + { |
| 379 | + //GH-1357 |
| 380 | + using (var s = OpenSession()) |
| 381 | + using (var tx = s.BeginTransaction()) |
| 382 | + { |
| 383 | + var p1 = new Person { Name = "Person name", Age = 15}; |
| 384 | + var p2 = new Person { Name = "Person name", Age = 5 }; |
| 385 | + |
| 386 | + await (s.SaveAsync(p1)); |
| 387 | + await (s.SaveAsync(p2)); |
| 388 | + await (tx.CommitAsync()); |
| 389 | + } |
| 390 | + using (var s = Sfi.OpenSession()) |
| 391 | + { |
| 392 | + var list = new List<IFutureEnumerable<Person>>(); |
| 393 | + for (var i = 0; i < 12; i++) |
| 394 | + { |
| 395 | + var query = s.Query<Person>(); |
| 396 | + for (var j = 0; j < 12; j++) |
| 397 | + { |
| 398 | + query = query.Where(x => x.Age > j); |
| 399 | + } |
| 400 | + list.Add(query.SetOptions(x => x.SetCacheable(true)).ToFuture()); |
| 401 | + } |
| 402 | + foreach (var query in list) |
| 403 | + { |
| 404 | + var result = query.ToList(); |
| 405 | + Assert.That(result.Count,Is.EqualTo(1)); |
| 406 | + } |
| 407 | + } |
| 408 | + using (var s = OpenSession()) |
| 409 | + using (var tx = s.BeginTransaction()) |
| 410 | + { |
| 411 | + await (s.DeleteAsync("from Person")); |
| 412 | + await (tx.CommitAsync()); |
| 413 | + } |
| 414 | + } |
374 | 415 | } |
375 | 416 | } |
0 commit comments