Skip to content

Commit 3b5951b

Browse files
committed
Merge tag '5.3.1'
2 parents 6f68581 + 2011a77 commit 3b5951b

File tree

23 files changed

+1382
-61
lines changed

23 files changed

+1382
-61
lines changed

build-common/NHibernate.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727

2828
<PackageProjectUrl>https://nhibernate.info</PackageProjectUrl>
2929
<PackageIconUrl>https://raw.githubusercontent.com/nhibernate/nhibernate-core/master/logo/NHibernate-NuGet.png</PackageIconUrl>
30+
<PackageIcon>NHibernate-NuGet.png</PackageIcon>
3031
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
3132
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
3233
<PackageReleaseNotes Condition="'$(VersionSuffix)' == ''">https://github.com/nhibernate/nhibernate-core/blob/$(VersionPrefix)/releasenotes.txt</PackageReleaseNotes>

releasenotes.txt

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,24 @@
1-
Build 5.3.0
1+
Build 5.3.1
2+
=============================
3+
4+
Release notes - NHibernate - Version 5.3.1
5+
6+
7 issues were resolved in this release.
7+
8+
** Bug
9+
10+
* #2445 LINQ queries with a cast from int to uint fail
11+
* #2440 InvalidCastException for Future Criteria with aliased fetches
12+
* #2439 Invalid parameter conversion for enums
13+
* #2437 Invalid cast on nullable custom type with Linq
14+
15+
** Task
16+
17+
* #2450 Release 5.3.1
18+
* #2436 Fix old http://nhibernate.info URIs
19+
* #2435 Fix iconUrl warning
20+
21+
Build 5.3.0
222
=============================
323

424
Release notes - NHibernate - Version 5.3.0

src/NHibernate.Test/Async/Criteria/SelectModeTest/SelectModeTest.cs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,72 @@ public async Task OrderedInnerJoinFetchAsync()
480480
}
481481
}
482482

483+
//GH-2440
484+
[Test]
485+
public async Task FetchWithAliasedJoinFutureAsync()
486+
{
487+
using (var session = OpenSession())
488+
{
489+
EntityComplex alias = null;
490+
EntitySimpleChild child1 = null;
491+
var list = (await (session.QueryOver<EntityComplex>(() => alias)
492+
.Where(ec => ec.Id == _parentEntityComplexId)
493+
.JoinQueryOver(() => alias.Child1, () => child1)
494+
.Fetch(SelectMode.Fetch, () => alias.ChildrenList)
495+
.TransformUsing(Transformers.DistinctRootEntity)
496+
.Future()
497+
.GetEnumerableAsync()))
498+
.ToList();
499+
500+
var childList = list[0].ChildrenList;
501+
Assert.That(list[0].ChildrenList.Count, Is.GreaterThan(1));
502+
Assert.That(list[0].ChildrenList, Is.EqualTo(list[0].ChildrenList.OrderByDescending(c => c.OrderIdx)), "wrong order");
503+
}
504+
}
505+
506+
//GH-2440
507+
[Test]
508+
public async Task CacheableFetchWithAliasedJoinFutureAsync()
509+
{
510+
using (var session = OpenSession())
511+
{
512+
EntityComplex alias = null;
513+
EntitySimpleChild child1 = null;
514+
var list = (await (session.QueryOver<EntityComplex>(() => alias)
515+
.Where(ec => ec.Id == _parentEntityComplexId)
516+
.JoinQueryOver(() => alias.Child1, () => child1)
517+
.Fetch(SelectMode.Fetch, () => alias.ChildrenList)
518+
.TransformUsing(Transformers.DistinctRootEntity)
519+
.Cacheable()
520+
.Future()
521+
.GetEnumerableAsync()))
522+
.ToList();
523+
EntityComplex value = null;
524+
Assert.DoesNotThrow(() => value = list[0]);
525+
Assert.That(value, Is.Not.Null);
526+
}
527+
528+
using (var sqlLog = new SqlLogSpy())
529+
using (var session = OpenSession())
530+
{
531+
EntityComplex alias = null;
532+
EntitySimpleChild child1 = null;
533+
var list = session.QueryOver<EntityComplex>(() => alias)
534+
.Where(ec => ec.Id == _parentEntityComplexId)
535+
.JoinQueryOver(() => alias.Child1, () => child1)
536+
.Fetch(SelectMode.Fetch, () => alias.ChildrenList)
537+
.TransformUsing(Transformers.DistinctRootEntity)
538+
.Cacheable()
539+
.Future()
540+
.ToList();
541+
EntityComplex value = null;
542+
Assert.DoesNotThrow(() => value = list[0]);
543+
Assert.That(value, Is.Not.Null);
544+
545+
Assert.That(sqlLog.Appender.GetEvents().Length, Is.EqualTo(0), "Query is expected to be retrieved from cache");
546+
}
547+
}
548+
483549
[Test, Obsolete]
484550
public async Task FetchModeEagerForLazyAsync()
485551
{
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
//------------------------------------------------------------------------------
2+
// <auto-generated>
3+
// This code was generated by AsyncGenerator.
4+
//
5+
// Changes to this file may cause incorrect behavior and will be lost if
6+
// the code is regenerated.
7+
// </auto-generated>
8+
//------------------------------------------------------------------------------
9+
10+
11+
using System;
12+
using System.Linq;
13+
using NHibernate.Cfg.MappingSchema;
14+
using NHibernate.Mapping.ByCode;
15+
using NUnit.Framework;
16+
using NHibernate.Linq;
17+
18+
namespace NHibernate.Test.NHSpecificTest.GH2437
19+
{
20+
using System.Threading.Tasks;
21+
[TestFixture]
22+
public class FixtureAsync : TestCaseMappingByCode
23+
{
24+
protected override HbmMapping GetMappings()
25+
{
26+
var mapper = new ModelMapper();
27+
mapper.AddMapping<UserMapping>();
28+
mapper.AddMapping<UserSessionMapping>();
29+
return mapper.CompileMappingForAllExplicitlyAddedEntities();
30+
}
31+
32+
protected override void OnSetUp()
33+
{
34+
using (var session = OpenSession())
35+
using (var transaction = session.BeginTransaction())
36+
{
37+
var user = new User { UserCode = "gokhanabatay", IsOpen = true, UserName = "Gökhan Abatay" };
38+
session.Save(user);
39+
40+
for (var i = 0; i < 10; i++)
41+
{
42+
var userSession = new UserSession
43+
{
44+
Claims = "My Claims",
45+
ExpireDateTime = DateTime.Now.AddDays(1),
46+
MbrId = 1,
47+
OpenDate = DateTime.Now,
48+
LocalIpAddress = "192.168.1.1",
49+
RemoteIpAddress = "127.0.0.1",
50+
LocalPort = 80 + i.ToString(),
51+
RemotePort = 80 + i.ToString(),
52+
DeviceId = "None",
53+
UserCode = "gokhanabatay",
54+
IsOpen = true
55+
};
56+
57+
session.Save(userSession);
58+
}
59+
60+
transaction.Commit();
61+
}
62+
}
63+
64+
protected override void OnTearDown()
65+
{
66+
using (var session = OpenSession())
67+
using (var transaction = session.BeginTransaction())
68+
{
69+
session.CreateQuery("delete from UserSession").ExecuteUpdate();
70+
session.CreateQuery("delete from User").ExecuteUpdate();
71+
72+
transaction.Commit();
73+
}
74+
}
75+
76+
[Test]
77+
public async Task Get_DateCustomType_NullableDateValueEqualsAsync()
78+
{
79+
using (var session = OpenSession())
80+
using (session.BeginTransaction())
81+
{
82+
var sessions = await (session.Query<UserSession>().Where(x => x.OpenDate.Value == DateTime.Now).ToListAsync());
83+
84+
Assert.That(sessions, Has.Count.EqualTo(10));
85+
}
86+
}
87+
88+
[Test]
89+
public async Task Get_DateTimeCustomType_NullableDateValueEqualsAsync()
90+
{
91+
using (var session = OpenSession())
92+
using (session.BeginTransaction())
93+
{
94+
var sessions = await (session.Query<UserSession>().Where(x => x.ExpireDateTime.Value > DateTime.Now).ToListAsync());
95+
96+
Assert.That(sessions, Has.Count.EqualTo(10));
97+
}
98+
}
99+
100+
[Test]
101+
public async Task Get_DateCustomType_DateEqualsAsync()
102+
{
103+
using (var session = OpenSession())
104+
using (session.BeginTransaction())
105+
{
106+
var sessions = await (session.Query<UserSession>().Where(x => x.OpenDate == DateTime.Now).ToListAsync());
107+
108+
Assert.That(sessions, Has.Count.EqualTo(10));
109+
}
110+
}
111+
112+
[Test]
113+
public async Task Get_DateTimeCustomType_DateEqualsAsync()
114+
{
115+
using (var session = OpenSession())
116+
using (session.BeginTransaction())
117+
{
118+
var sessions = await (session.Query<UserSession>().Where(x => x.ExpireDateTime > DateTime.Now).ToListAsync());
119+
120+
Assert.That(sessions, Has.Count.EqualTo(10));
121+
}
122+
}
123+
124+
[Test]
125+
public async Task Get_BooleanCustomTypeAsync()
126+
{
127+
using (var session = OpenSession())
128+
using (session.BeginTransaction())
129+
{
130+
var results = await (session.Query<UserSession>()
131+
.Where(x => x.OpenDate == DateTime.Now)
132+
.Select(x => new NullableBooleanResult() {IsOpen = x.User.IsOpen})
133+
.ToListAsync());
134+
135+
Assert.That(results, Has.Count.EqualTo(10));
136+
}
137+
}
138+
139+
public class NullableBooleanResult
140+
{
141+
public bool? IsOpen { get; set; }
142+
}
143+
}
144+
}

0 commit comments

Comments
 (0)