Skip to content

Get rid of select queries for each ManyToMany not found ignored element in Criteria and lazy loading #3396

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Prev Previous commit
Next Next commit
Generate async files
  • Loading branch information
github-actions[bot] committed Aug 5, 2023
commit 4f6da98c596994140eaeb919b5d3b3c8ffedb731
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,25 @@ namespace NHibernate.Test.NHSpecificTest.NH750
public class ManyToManyThrowsForNotFoundFixtureAsync : BugTestCase
{
private int _id;
private int _withTempalteId;

protected override void OnSetUp()
{
using (var s = Sfi.OpenSession())
using (var t = s.BeginTransaction())
{
Device dv = new Device("Device");
Drive dr = new Drive("Drive");
s.Save(dr);
dv.DrivesNotIgnored.Add(dr);
using var s = Sfi.OpenSession();
using var t = s.BeginTransaction();
Device dv = new Device("Device");
Drive dr = new Drive("Drive");
var withTempalte = new Device("Device With Device 2 template") { Template = dv };
s.Save(dr);
dv.DrivesNotIgnored.Add(dr);

_id = (int) s.Save(dv);
s.Flush();
_id = (int) s.Save(dv);
_withTempalteId = (int)s.Save(withTempalte);
s.Flush();

s.Clear();
s.Delete(dr);
t.Commit();
}
s.Clear();
s.Delete(dr);
t.Commit();
}

protected override void OnTearDown()
Expand Down Expand Up @@ -69,7 +70,18 @@ public void QueryOverFetchAsync()
.Fetch(SelectMode.Fetch, x => x.DrivesNotIgnored)
.Where(Restrictions.IdEq(_id))
.TransformUsing(Transformers.DistinctRootEntity);
Assert.ThrowsAsync<ObjectNotFoundException>(async () => await (NHibernateUtil.InitializeAsync(await (queryOver.SingleOrDefaultAsync()))));
Assert.ThrowsAsync<ObjectNotFoundException>(() => queryOver.SingleOrDefaultAsync());
}

[Test]
public void QueryOverFetch2Async()
{
using var s = OpenSession();
var queryOver = s.QueryOver<Device>()
.Fetch(SelectMode.Fetch, x=> x.Template, x => x.Template.DrivesNotIgnored)
.Where(Restrictions.IdEq(_withTempalteId))
.TransformUsing(Transformers.DistinctRootEntity);
Assert.ThrowsAsync<ObjectNotFoundException>(() => queryOver.SingleOrDefaultAsync());
}

[Test]
Expand All @@ -82,5 +94,17 @@ public void LinqFetchAsync()
.Where(x => x.Id == _id);
Assert.ThrowsAsync<ObjectNotFoundException>(async () => await (NHibernateUtil.InitializeAsync(await (query.SingleOrDefaultAsync()))));
}

[Test]
public void LinqFetch2Async()
{
using var s = OpenSession();
var query = s.Query<Device>()

.Fetch(x => x.Template)
.ThenFetchMany(x => x.DrivesNotIgnored)
.Where(x => x.Id == _withTempalteId);
Assert.ThrowsAsync<ObjectNotFoundException>(async () => await (NHibernateUtil.InitializeAsync(await (query.SingleOrDefaultAsync()))));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,7 @@ public async Task ManyToManyCriteriaJoinAsync()

s = OpenSession();
t = s.BeginTransaction();
var log = new SqlLogSpy();

await (s.CreateCriteria(typeof(Parent))
.AddOrder(Order.Desc("Name"))
// H3 has this after CreateCriteria("Friends"), but it's not yet supported in NH
Expand Down