[英]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.