Skip to content

Commit e6604a8

Browse files
committed
Added test
1 parent cbea12e commit e6604a8

File tree

7 files changed

+63
-12
lines changed

7 files changed

+63
-12
lines changed

src/NHibernate.DomainModel/Northwind/Entities/Order.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace NHibernate.DomainModel.Northwind.Entities
66
{
77
public class Order
88
{
9-
private readonly ISet<OrderLine> _orderLines;
9+
private readonly IList<OrderLine> _orderLines;
1010
private Customer _customer;
1111
private Employee _employee;
1212
private decimal? _freight;
@@ -20,7 +20,7 @@ public class Order
2020

2121
public Order()
2222
{
23-
_orderLines = new HashSet<OrderLine>();
23+
_orderLines = new List<OrderLine>();
2424
}
2525

2626
public virtual int OrderId
@@ -83,7 +83,7 @@ public virtual Address ShippingAddress
8383
set { _shippingAddress = value; }
8484
}
8585

86-
public virtual ISet<OrderLine> OrderLines
86+
public virtual IList<OrderLine> OrderLines
8787
{
8888
get { return _orderLines; }
8989
}
@@ -106,4 +106,4 @@ public virtual void RemoveOrderLine(OrderLine orderLine)
106106
}
107107
}
108108
}
109-
}
109+
}

src/NHibernate.DomainModel/Northwind/Mappings/Customer.hbm.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace="NHibernate.DomainModel.Northwind.Entities" assembly="NHibernate.DomainModel">
44

55
<class name="Customer" table="Customers">
6+
<cache usage="nonstrict-read-write"/>
67
<id name="CustomerId" column="CustomerId" type="string" unsaved-value="-1"
78
access="field.camelcase-underscore">
89
<generator class="assigned" />
@@ -45,10 +46,11 @@
4546

4647
<set name="Orders" lazy="true" access="field.camelcase-underscore"
4748
cascade="all-delete-orphan" inverse="true">
49+
<cache usage="nonstrict-read-write"/>
4850
<key column="CustomerId"/>
4951
<one-to-many class="Order"/>
5052
</set>
5153

5254
</class>
5355

54-
</hibernate-mapping>
56+
</hibernate-mapping>

src/NHibernate.DomainModel/Northwind/Mappings/Order.hbm.xml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace="NHibernate.DomainModel.Northwind.Entities" assembly="NHibernate.DomainModel">
44

55
<class name="Order" table="Orders">
6+
<cache usage="nonstrict-read-write"/>
67
<id name="OrderId" column="OrderId" type="int" unsaved-value="-1"
78
access="field.camelcase-underscore">
89
<generator class="assigned" />
@@ -52,12 +53,13 @@
5253

5354
</component>
5455

55-
<set name="OrderLines" lazy="true" access="field.camelcase-underscore"
56+
<bag name="OrderLines" lazy="true" access="field.camelcase-underscore"
5657
cascade="all-delete-orphan" inverse="true">
58+
<cache usage="nonstrict-read-write"/>
5759
<key column="OrderId"/>
5860
<one-to-many class="OrderLine"/>
59-
</set>
61+
</bag>
6062

6163
</class>
6264

63-
</hibernate-mapping>
65+
</hibernate-mapping>

src/NHibernate.DomainModel/Northwind/Mappings/OrderLine.hbm.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace="NHibernate.DomainModel.Northwind.Entities" assembly="NHibernate.DomainModel">
44

55
<class name="OrderLine" table="OrderLines">
6-
6+
<cache usage="nonstrict-read-write"/>
77
<id name="Id" column="OrderLineId" type="long" unsaved-value="-1"
88
access="field.camelcase-underscore">
99
<generator class="native" />
@@ -26,4 +26,4 @@
2626

2727
</class>
2828

29-
</hibernate-mapping>
29+
</hibernate-mapping>

src/NHibernate.Test/Async/Linq/ProjectionsTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ public async Task ProjectAnonymousTypeWithCollection3Async()
297297
public async Task ProjectKnownTypeWithCollectionAsync()
298298
{
299299
var query = from o in db.Orders
300-
select new ExpandedWrapper<Order, ISet<OrderLine>>
300+
select new ExpandedWrapper<Order, IList<OrderLine>>
301301
{
302302
ExpandedElement = o,
303303
ProjectedProperty0 = o.OrderLines,

src/NHibernate.Test/Linq/ProjectionsTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ public void ProjectAnonymousTypeWithCollection3()
285285
public void ProjectKnownTypeWithCollection()
286286
{
287287
var query = from o in db.Orders
288-
select new ExpandedWrapper<Order, ISet<OrderLine>>
288+
select new ExpandedWrapper<Order, IList<OrderLine>>
289289
{
290290
ExpandedElement = o,
291291
ProjectedProperty0 = o.OrderLines,

src/NHibernate.Test/Linq/QueryCacheableTests.cs

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Linq;
22
using NHibernate.Cfg;
3+
using NHibernate.DomainModel.Northwind.Entities;
34
using NHibernate.Linq;
45
using NUnit.Framework;
56

@@ -195,6 +196,52 @@ public void GroupByQueryIsCacheable()
195196
Assert.That(Sfi.Statistics.QueryCacheHitCount, Is.EqualTo(1), "Unexpected cache hit count");
196197
}
197198

199+
[Test]
200+
public void CartesianProduct()
201+
{
202+
Sfi.Statistics.Clear();
203+
Sfi.EvictQueries();
204+
205+
Order order;
206+
207+
using (var s = Sfi.OpenSession())
208+
{
209+
order = s.Query<Order>()
210+
.FetchMany(x => x.OrderLines)
211+
.Where(x => x.OrderId == 10248)
212+
.ToList()
213+
.First();
214+
}
215+
216+
Assert.That(order.OrderLines, Has.Count.EqualTo(3));
217+
218+
using (var s = Sfi.OpenSession())
219+
using (var t = s.BeginTransaction())
220+
{
221+
order = s.Query<Order>()
222+
.WithOptions(o => o.SetCacheable(true))
223+
.Fetch(x => x.Customer).ThenFetchMany(x => x.Orders)
224+
.FetchMany(x => x.OrderLines)
225+
.Where(x => x.OrderId == 10248)
226+
.ToList()
227+
.First();
228+
229+
t.Commit();
230+
}
231+
232+
Assert.That(order.OrderLines, Has.Count.EqualTo(15));
233+
234+
using (var s = Sfi.OpenSession())
235+
using (var t = s.BeginTransaction())
236+
{
237+
order = s.Get<Order>(10248);
238+
NHibernateUtil.Initialize(order.OrderLines);
239+
t.Commit();
240+
}
241+
242+
Assert.That(order.OrderLines, Has.Count.EqualTo(15));
243+
}
244+
198245
[Test]
199246
public void GroupByQueryIsCacheable2()
200247
{

0 commit comments

Comments
 (0)