from s in metaData.ServiceProvider
where s.ServiceProviderRegions.Any()
select s;
Here ServiceProvider inherits from LegalPerson (when ServiceProvider doesn't inherit LegalPerson the query works fine). The query generates an error with message:
"The multi-part identifier "LPLA_2.ServiceProviderId" could not be bound.
The multi-part identifier "LPLA_2.ServiceProviderId" could not be bound.".
The generated SQL is:
SELECT [LPLA_2].[ServiceProviderId]
FROM ( [DB].[dbo].[LegalPerson] [LPA_L3]
LEFT JOIN [DB].[dbo].[ServiceProvider] [LPA_L4] ON [LPA_L3].[LegalPersonId]=[LPA_L4].[ServiceProviderId])
WHERE ( [LPA_L4].[ServiceProviderId] = [LPLA_2].[ServiceProviderId])
SELECT DISTINCT [LPA_L1].[CompanyCode] AS [F1_0], [LPA_L1].[LegalPersonId] AS [F1_1], [LPA_L1].[Name] AS [F1_2], [LPA_L2].[ServiceProviderId] AS [F2_3], [LPA_L2].[StateId] AS [F2_4]
FROM ( [DB].[dbo].[LegalPerson] [LPA_L1]
INNER JOIN [DB].[dbo].[ServiceProvider] [LPA_L2] ON [LPA_L1].[LegalPersonId]=[LPA_L2].[ServiceProviderId])
WHERE ( ( ( EXISTS (SELECT [LPLA_2].[ServiceProviderId]
FROM ( [DB].[dbo].[LegalPerson] [LPA_L3]
LEFT JOIN [DB].[dbo].[ServiceProvider] [LPA_L4] ON [LPA_L3].[LegalPersonId]=[LPA_L4].[ServiceProviderId])
WHERE ( [LPA_L4].[ServiceProviderId] = [LPLA_2].[ServiceProviderId])))) AND ( [LPA_L2].[ServiceProviderId] IS NOT NULL))
I've attached a solution with DB schema and an llblgenproj file in case you need it.