Skip to content

Commit 589b6dd

Browse files
committed
Proper entity name retrieval
1 parent 3bbb542 commit 589b6dd

File tree

4 files changed

+33
-13
lines changed

4 files changed

+33
-13
lines changed

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,25 @@ public void ShouldThrowForQueryOnNotMappedEntityAsync()
4040
[Test]
4141
public void ShouldThrowForQueryOnNotMappedEntityNameAsync()
4242
{
43-
var entityName = "NotMappedEntityName";
43+
var entityName = "SomeNamespace.NotMappedEntityName";
4444
var querySyntaxException = Assert.ThrowsAsync<QuerySyntaxException>(() => session.Query<NotMappedEntity>(entityName).ToListAsync());
4545
Assert.That(querySyntaxException.Message, Does.Contain(entityName));
4646
}
4747

4848
[Test]
4949
public void ShouldThrowForDmlQueryOnNotMappedEntityAsync()
5050
{
51-
var querySyntaxException = Assert.ThrowsAsync<QuerySyntaxException>(() => session.Query<NotMappedEntity>().DeleteAsync());
52-
Assert.That(querySyntaxException.Message, Does.Contain(nameof(NotMappedEntity)));
51+
Assert.Multiple(
52+
() =>
53+
{
54+
var querySyntaxException = Assert.ThrowsAsync<QuerySyntaxException>(() => session.Query<NotMappedEntity>().DeleteAsync());
55+
Assert.That(querySyntaxException.Message, Does.Contain(nameof(NotMappedEntity)));
56+
57+
var entityName = "SomeNamespace.NotMappedEntityName";
58+
querySyntaxException = Assert.ThrowsAsync<QuerySyntaxException>(() => session.DeleteAsync($"from {entityName}"));
59+
Assert.That(querySyntaxException.Message, Does.Contain(entityName));
60+
return Task.CompletedTask;
61+
});
5362
}
5463

5564
[Test]

src/NHibernate.Test/Linq/LinqQuerySamples.cs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,24 @@ public void ShouldThrowForQueryOnNotMappedEntity()
2929
[Test]
3030
public void ShouldThrowForQueryOnNotMappedEntityName()
3131
{
32-
var entityName = "NotMappedEntityName";
32+
var entityName = "SomeNamespace.NotMappedEntityName";
3333
var querySyntaxException = Assert.Throws<QuerySyntaxException>(() => session.Query<NotMappedEntity>(entityName).ToList());
3434
Assert.That(querySyntaxException.Message, Does.Contain(entityName));
3535
}
3636

3737
[Test]
3838
public void ShouldThrowForDmlQueryOnNotMappedEntity()
3939
{
40-
var querySyntaxException = Assert.Throws<QuerySyntaxException>(() => session.Query<NotMappedEntity>().Delete());
41-
Assert.That(querySyntaxException.Message, Does.Contain(nameof(NotMappedEntity)));
40+
Assert.Multiple(
41+
() =>
42+
{
43+
var querySyntaxException = Assert.Throws<QuerySyntaxException>(() => session.Query<NotMappedEntity>().Delete());
44+
Assert.That(querySyntaxException.Message, Does.Contain(nameof(NotMappedEntity)));
45+
46+
var entityName = "SomeNamespace.NotMappedEntityName";
47+
querySyntaxException = Assert.Throws<QuerySyntaxException>(() => session.Delete($"from {entityName}"));
48+
Assert.That(querySyntaxException.Message, Does.Contain(entityName));
49+
});
4250
}
4351

4452
[Test]

src/NHibernate/Hql/Ast/ANTLR/AstPolymorphicProcessor.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,16 @@ private IASTNode[] Process()
3535

3636
var parsers = DuplicateTree();
3737

38-
if (parsers.Length == 0)
39-
throw new QuerySyntaxException(
40-
_nodeMapping.Keys.Count == 1
41-
? _nodeMapping.First().Key + " is not mapped"
42-
: string.Join(", ", _nodeMapping.Keys) + " are not mapped");
38+
if (parsers.Length == 0)
39+
{
40+
var entityNames = _nodeMapping.Keys.ToArray(x => PolymorphicQuerySourceDetector.GetClassName(x));
41+
throw new QuerySyntaxException(
42+
entityNames.Length == 1
43+
? entityNames[0] + " is not mapped"
44+
: string.Join(", ", entityNames) + " are not mapped");
45+
}
4346

44-
return parsers;
47+
return parsers;
4548
}
4649

4750
private IASTNode[] DuplicateTree()

src/NHibernate/Hql/Ast/ANTLR/PolymorphicQuerySourceDetector.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ private void AddImplementorsToMap(IASTNode querySource, string className, string
4545
implementors.ToArray(implementor => MakeIdent(querySource, implementor)));
4646
}
4747

48-
private static string GetClassName(IASTNode querySource)
48+
internal static string GetClassName(IASTNode querySource)
4949
{
5050
switch (querySource.Type)
5151
{

0 commit comments

Comments
 (0)