Skip to content

Commit b3cdf05

Browse files
bahusoidhazzik
authored andcommitted
Add virtual DefaultQueryProvider.CreateWithOptions
1 parent 8642b19 commit b3cdf05

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

src/NHibernate.Test/Async/CfgTest/ConfigurationFixture.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
using System;
1212
using System.Collections;
1313
using System.IO;
14+
using System.Linq;
1415
using System.Xml;
1516
using NHibernate.Cfg;
1617
using NHibernate.DomainModel;
@@ -107,6 +108,15 @@ public SampleQueryProvider(ISessionImplementor session) : base(session)
107108
{
108109

109110
}
111+
112+
protected SampleQueryProvider(ISessionImplementor session, object collection, NhQueryableOptions options) : base(session, collection, options)
113+
{
114+
}
115+
116+
protected override IQueryProvider CreateWithOptions(NhQueryableOptions options)
117+
{
118+
return new SampleQueryProvider(Session, Collection, options);
119+
}
110120
}
111121

112122
}

src/NHibernate.Test/CfgTest/ConfigurationFixture.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections;
33
using System.IO;
4+
using System.Linq;
45
using System.Xml;
56
using NHibernate.Cfg;
67
using NHibernate.DomainModel;
@@ -426,6 +427,15 @@ public SampleQueryProvider(ISessionImplementor session) : base(session)
426427
{
427428

428429
}
430+
431+
protected SampleQueryProvider(ISessionImplementor session, object collection, NhQueryableOptions options) : base(session, collection, options)
432+
{
433+
}
434+
435+
protected override IQueryProvider CreateWithOptions(NhQueryableOptions options)
436+
{
437+
return new SampleQueryProvider(Session, Collection, options);
438+
}
429439
}
430440

431441
[Test]
@@ -444,6 +454,12 @@ public void NH2890Standard()
444454
var query = session.Query<NHibernate.DomainModel.A>();
445455
Assert.IsInstanceOf(typeof(SampleQueryProvider), query.Provider);
446456
}
457+
458+
using (var session = sessionFactory.OpenSession())
459+
{
460+
var query = session.Query<NHibernate.DomainModel.A>().WithOptions(x => x.SetReadOnly(true));
461+
Assert.IsInstanceOf(typeof(SampleQueryProvider), query.Provider);
462+
}
447463
}
448464
}
449465

src/NHibernate/Linq/DefaultQueryProvider.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public DefaultQueryProvider(ISessionImplementor session, object collection)
7070
Collection = collection;
7171
}
7272

73-
private DefaultQueryProvider(ISessionImplementor session, object collection, NhQueryableOptions options)
73+
protected DefaultQueryProvider(ISessionImplementor session, object collection, NhQueryableOptions options)
7474
: this(session, collection)
7575
{
7676
_options = options;
@@ -108,6 +108,11 @@ public IQueryProvider WithOptions(Action<NhQueryableOptions> setOptions)
108108
? _options.Clone()
109109
: new NhQueryableOptions();
110110
setOptions(options);
111+
return CreateWithOptions(options);
112+
}
113+
114+
protected virtual IQueryProvider CreateWithOptions(NhQueryableOptions options)
115+
{
111116
return new DefaultQueryProvider(Session, Collection, options);
112117
}
113118

0 commit comments

Comments
 (0)