Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit ae83e33

Browse filesBrowse files
committed
Provide test case for #3643
1 parent f5a7a1f commit ae83e33
Copy full SHA for ae83e33

File tree

Expand file treeCollapse file tree

3 files changed

+149
-0
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+149
-0
lines changed
+27Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
5+
// ReSharper disable CollectionNeverUpdated.Local
6+
// ReSharper disable UnassignedGetOnlyAutoProperty
7+
8+
namespace NHibernate.Test.NHSpecificTest.GH3643
9+
{
10+
class Entity
11+
{
12+
private readonly ICollection<ChildEntity> _children = new List<ChildEntity>();
13+
public virtual EntityId Id { get; protected set; }
14+
public virtual IEnumerable<ChildEntity> Children => _children.AsEnumerable();
15+
}
16+
17+
class ChildEntity
18+
{
19+
public virtual int Id { get; protected set; }
20+
}
21+
22+
enum EntityId
23+
{
24+
Id1,
25+
Id2
26+
}
27+
}
+118Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
using System.Linq;
2+
using NHibernate.Cfg;
3+
using NHibernate.Cfg.MappingSchema;
4+
using NHibernate.Linq;
5+
using NHibernate.Mapping.ByCode;
6+
using NUnit.Framework;
7+
8+
namespace NHibernate.Test.NHSpecificTest.GH3643
9+
{
10+
[TestFixture]
11+
public class FixtureByCode : TestCaseMappingByCode
12+
{
13+
protected override void Configure(Configuration configuration)
14+
{
15+
configuration.SetProperty(Environment.UseQueryCache, "true");
16+
configuration.SetProperty(Environment.GenerateStatistics, "true");
17+
}
18+
19+
protected override HbmMapping GetMappings()
20+
{
21+
var mapper = new ModelMapper();
22+
23+
mapper.Class<Entity>(
24+
rc =>
25+
{
26+
rc.Id(x => x.Id);
27+
rc.Bag(
28+
x => x.Children,
29+
m =>
30+
{
31+
m.Access(Accessor.Field);
32+
m.Key(k => k.Column("EntityId"));
33+
},
34+
r => r.OneToMany());
35+
36+
rc.Cache(
37+
cm =>
38+
{
39+
cm.Include(CacheInclude.All);
40+
cm.Usage(CacheUsage.ReadWrite);
41+
});
42+
});
43+
44+
mapper.Class<ChildEntity>(
45+
rc =>
46+
{
47+
rc.Id(x => x.Id);
48+
rc.Cache(
49+
cm =>
50+
{
51+
cm.Include(CacheInclude.All);
52+
cm.Usage(CacheUsage.ReadWrite);
53+
});
54+
});
55+
56+
return mapper.CompileMappingForAllExplicitlyAddedEntities();
57+
}
58+
59+
protected override void OnSetUp()
60+
{
61+
using var session = OpenSession();
62+
using var transaction = session.BeginTransaction();
63+
64+
session.CreateSQLQuery(
65+
"INSERT INTO Entity (Id) VALUES (0)"
66+
).ExecuteUpdate();
67+
68+
session.CreateSQLQuery(
69+
"INSERT INTO ChildEntity (Id, EntityId) VALUES (0, 0)"
70+
).ExecuteUpdate();
71+
72+
session.CreateSQLQuery(
73+
"INSERT INTO ChildEntity (Id, EntityId) VALUES (1, 0)"
74+
).ExecuteUpdate();
75+
76+
transaction.Commit();
77+
}
78+
79+
protected override void OnTearDown()
80+
{
81+
using var session = OpenSession();
82+
using var transaction = session.BeginTransaction();
83+
84+
session.CreateSQLQuery("DELETE FROM ChildEntity").ExecuteUpdate();
85+
session.CreateSQLQuery("DELETE FROM Entity").ExecuteUpdate();
86+
87+
transaction.Commit();
88+
}
89+
90+
[Test]
91+
public void LoadsEntityWithEnumIdAndChildrenUsingQueryCache()
92+
{
93+
LoadEntityByNameWithQueryCache(); // warm up cache
94+
95+
var entity = LoadEntityByNameWithQueryCache();
96+
97+
Assert.That(entity.Children.Count(), Is.EqualTo(2));
98+
99+
Assert.That(Sfi.Statistics.QueryExecutionCount, Is.EqualTo(1), "Unexpected execution count");
100+
Assert.That(Sfi.Statistics.QueryCachePutCount, Is.EqualTo(1), "Unexpected cache put count");
101+
Assert.That(Sfi.Statistics.QueryCacheHitCount, Is.EqualTo(1), "Unexpected cache hit count");
102+
}
103+
104+
private Entity LoadEntityByNameWithQueryCache()
105+
{
106+
using var session = OpenSession();
107+
using var transaction = session.BeginTransaction();
108+
var entity = session
109+
.Query<Entity>()
110+
.FetchMany(x => x.Children)
111+
.WithOptions(opt => opt.SetCacheable(true))
112+
.ToList()[0];
113+
114+
transaction.Commit();
115+
return entity;
116+
}
117+
}
118+
}

‎src/NHibernate.sln.DotSettings

Copy file name to clipboardExpand all lines: src/NHibernate.sln.DotSettings
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateConstants/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /&gt;</s:String>
2222
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /&gt;</s:String>
2323
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticReadonly/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
24+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=15b5b1f1_002D457c_002D4ca6_002Db278_002D5615aedc07d3/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static readonly fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
25+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=236f7aa5_002D7b06_002D43ca_002Dbf2a_002D9b31bfcff09a/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Any" AccessRightKinds="Private" Description="Constant fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="CONSTANT_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
26+
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/UserRules/=4a98fdf6_002D7d98_002D4f5a_002Dafeb_002Dea44ad98c70c/@EntryIndexedValue">&lt;Policy&gt;&lt;Descriptor Staticness="Instance" AccessRightKinds="Private" Description="Instance fields (private)"&gt;&lt;ElementKinds&gt;&lt;Kind Name="FIELD" /&gt;&lt;Kind Name="READONLY_FIELD" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect="True" WarnAboutPrefixesAndSuffixes="False" Prefix="_" Suffix="" Style="aaBb" /&gt;&lt;/Policy&gt;</s:String>
2427
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
2528
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
2629
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
@@ -29,6 +32,7 @@
2932
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
3033
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
3134
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
35+
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue">True</s:Boolean>
3236
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EFormat_002ESettingsUpgrade_002EAlignmentTabFillStyleMigration/@EntryIndexedValue">True</s:Boolean>
3337
<s:Boolean x:Key="/Default/Environment/UnitTesting/SeparateAppDomainPerAssembly/@EntryValue">True</s:Boolean>
3438
<s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=0BE95D01E0F2244E97F5FEFAD1EB1A63/@KeyIndexDefined">True</s:Boolean>

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.