|
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