繁体   English   中英

在.Where()中包含导航属性?

[英]Including a navigational property in a .Where()?

我有几张有亲子关系的桌子。 例如

CREATE TABLE parent
(
    parentid VARCHAR(32),
    name VARCHAR(128),
    CONSTRAINT PK_parent PRIMARY KEY (parentid)
);

CREATE TABLE child
(
    parentid VARCHAR(32),
    childid VARCHAR(32),
    name VARCHAR(128),
    age INTEGER,
    CONSTRAINT PK_child PRIMARY KEY (parentid, childid),
    CONSTRAINT FK_child_parent FOREIGN KEY (parentid)
    REFERENCES parent (parentid)
);

我需要查找父记录,其中孩子的某些条件是真的。 在SQL中,这很简单:

SELECT p.*
FROM parent AS p
JOIN child AS c
ON c.parentid = p.parentid
WHERE c.age = 10
;

但是如何在Entity Framework中执行此操作?

我定义了一个导航属性,所以父类有一个子集合,所以我希望能够包含一个.Where(p => p.child.age == 10),但这不是工作。

什么

如果您的导航属性是集合,则必须使用Any

.Where(p => p.Children.Any(c => c.Age == 10))

由于定义了foriegn键,EF将自动为其添加属性:

from p in Parent
where p.Children.Any(c=> c.Age == 10)
select p;

要么

from c in child
where c.Age == 10
select c.Parent;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM