首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用内部联接获取导航属性

使用内部联接获取导航属性
EN

Stack Overflow用户
提问于 2012-01-23 17:47:05
回答 2查看 1.3K关注 0票数 1

我已经在SqlCe中为以下数据库表创建了实体数据模型:

代码语言:javascript
复制
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 ''
);

Entities (基于已有数据库添加实体模型创建):

代码语言:javascript
复制
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

并执行以下查询:

代码语言:javascript
复制
        var query = (from v in entities.Vulnerabilities.Include("Software")
                     where v.Id == id && v.Software.Count > 0
                     select v);

它非常-非常-非常慢,因为生成的SQL join漏洞与带有左外部联接的software_vulnerability。

有没有什么方法可以简单地说,我只想要非空software_vulnerability的漏洞,内部连接是可以的?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-23 18:42:53

不是的。您无法控制已使用的连接。您可以尝试恢复查询:

代码语言:javascript
复制
var query = (from s in entities.SofwareVulnerabilities.Include("Vulnerability")
             where s.VulnerabilityId == id
             select s);

您将获得您的单个预期漏洞的所有软件漏洞,并且该漏洞将被包括在内。如果你的关系来自软件漏洞,被正确地配置为强制的,那么它应该使用内部连接。

票数 1
EN

Stack Overflow用户

发布于 2012-01-23 17:54:05

我认为这可能很慢,因为您正在使用count。我将在这里尝试使用.Any(),因为它可能会更快

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8969676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档