Я создал модель данных сущности для следующих таблиц базы данных в SqlCe:
CREATE TABLE [test_vulnerabilities] (
[id] INTEGER PRIMARY KEY,
[description] NTEXT NOT NULL DEFAULT ''
);
CREATE TABLE [test_software_vulnerabilities]
(
[id] INTEGER PRIMARY KEY IDENTITY,
[vulnerability_id] INTEGER NOT NULL
REFERENCES [test_vulnerabilities]([id]),
[details] NTEXT NOT NULL DEFAULT ''
);
Объекты (созданные путем добавления модели объектов на основе существующей базы данных):
entity Vulnerability in set Vulnerabilities
Id int
Description string
Software ICollection<SoftwareVulnerability> - navigation property
entity SoftwareVulnerability in set SoftwareVulnerabilities
Id int
Details string
VulnerabilityId int
Vulnerability Vulnerability - navigation property
и выполняем следующий запрос:
var query = (from v in entities.Vulnerabilities.Include("Software")
where v.Id == id && v.Software.Count > 0
select v);
это очень-очень-очень медленно, потому что сгенерированный SQL объединяет уязвимости с software_vulnerability с левым внешним объединением.
Можно ли просто сказать, что я хочу только уязвимости с непустой уязвимостью software_vulnerability и с INNER JOIN все в порядке?
Спасибо!