엔티티 프레임 워크 쿼리 #1
-
10-07-2019 - |
문제
자녀 데이터 세트를 제한하는 방법을 알아 내려고 노력하고 있습니다. 활성 기록 만 포함합니다 ...
// Here's what I have currently...
m_BackLoggerEntities.Stories
.Include("Sprints")
.Include("Tasks")
.Include("Efforts")
.Include("Products")
.First(s => s.StoryId == id);
// Here's what I thought I could do...
m_BackLoggerEntities.Stories
.Include("Sprints")
.Include("Tasks")
.Include("Efforts")
.Include("Products")
.Where(s => s.Tasks.Active)
.First(s => s.StoryId == id);
// I also tried this...
m_BackLoggerEntities.Stories
.Include("Sprints")
.Include("Tasks")
.Include("Efforts")
.Include("Products")
.First(s => s.StoryId == id && s => s.Tasks.Active));
분명히 이것들 중 어느 것도 작동하지 않습니다. 어떻게 해야할지 잘 모르겠습니다 ...
해결책
보세요 알렉스 제임스 팁 37. 링크 된 기사의 예에 따르면 다음과 같이 수행 할 수 있습니다.
var query = from story in m_BackLoggerEntities.Stories
where story.StoryId == id
select new {
story,
Tasks = from task in story.Tasks
where task.Active
select task
};
var stories = query
.AsEnumerable()
.Select(x => x.Story);
"이야기"내부의 각 이야기에는 활발한 작업 만 있어야합니다.
다른 팁
다음과 같은 것이 필요합니다.
Model = m_BackLoggerEntities.Stories
.Include("Sprints")
.Include("Tasks")
.Include("Efforts")
.Include("Products")
.SingleOrDefault(s => s.StoryId == id);
그런 다음, 당신의 견해로 :
@foreach (var task in Model.Tasks.Where(t => t.Active))
내가 원하는 것을 "시뮬레이션"하는 유일한 방법은 사용하는 것입니다 ...
var storyToDetail =
m_BackLoggerEntities.Stories
.Include("Sprints")
.Include("Tasks")
.Include("Efforts")
.Include("Products")
.First(s => s.StoryId == id);
그런 다음 시야의 foreach에서 ...
<% foreach (var task in Model.Tasks.Where(t => t.Active))
그러나 이것은 물론 내가 원하는 것보다 더 많은 레코드를 되찾아줍니다.
제휴하지 않습니다 StackOverflow