fix(configdb): InstanceLocator single untracked projected join (review 2026-10-21 08/P7)
This commit is contained in:
@@ -22,15 +22,13 @@ public class InstanceLocator : IInstanceLocator
|
||||
string instanceUniqueName,
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
var instance = await _context.Set<Commons.Entities.Instances.Instance>()
|
||||
.FirstOrDefaultAsync(i => i.UniqueName == instanceUniqueName, cancellationToken);
|
||||
|
||||
if (instance == null)
|
||||
return null;
|
||||
|
||||
var site = await _context.Set<Commons.Entities.Sites.Site>()
|
||||
.FindAsync(new object[] { instance.SiteId }, cancellationToken);
|
||||
|
||||
return site?.SiteIdentifier;
|
||||
// One untracked projected join: this sits on the inbound-API Route.To hot path and
|
||||
// only needs a single string, so it must not materialise (and track) two entities.
|
||||
return await (
|
||||
from i in _context.Set<Commons.Entities.Instances.Instance>().AsNoTracking()
|
||||
join s in _context.Set<Commons.Entities.Sites.Site>().AsNoTracking() on i.SiteId equals s.Id
|
||||
where i.UniqueName == instanceUniqueName
|
||||
select s.SiteIdentifier)
|
||||
.FirstOrDefaultAsync(cancellationToken);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user