簡體   English   中英

ado.net實體框架在where子句中使用count

[英]ado.net entity framework using count in a where clause

我正在嘗試執行以下查詢,但是返回錯誤的結果。

        foreach (var item in (from project in db.Projects
                              where project.Id == pProjectId
                              from task in project.Tasks
                              from taskItem in task.TaskItems
                              where taskItem.Velocities.Count() == 0 // not finished yet
                              select new
                              {
                                  ProjectId = pProjectId,
                                  PriorityId = task.Priorities.Id,
                                  TaskId = task.Id,
                                  ResourceId = taskItem.Resources.Id,
                                  EstimatedDuration = taskItem.EstimatedDuration,
                                  TaskItemId = taskItem.Id
                              }))
        {
        }

我正在嘗試從所有沒有與速度相關的對象的taskItem生成對象。 表結構是每個taskItem可能具有許多速度。 在此調用之前,我為某些項目提供了速度,但是它們未被該where子句過濾。 我在做明顯的錯誤嗎?

編輯:我認為(盯着代碼一會兒之后),我需要指定某種分組。 實際上,我不需要任何Velocity記錄詳細信息,而只是需要與taskItems相關的計數

您可以嘗試將taskItem.Velocities.Count()移動到選擇的新{}內部

然后在結果列表上進行選擇,其中velictes計數== 0

您需要具有聯接以反映關系,當前您正在執行笛卡爾(交叉)聯接(即項目,task和taskItem的所有組合)。

嘗試類似:

var res = from project in db.Projects
          where project.Id == pProjectId
          join task in project.Tasks on task.projectId equals project.projectId
          join ttaskItem in task.TaskItems on taskItem.taskId equals task.taskId
          where taskItem.Velocities.Count() == 0 // not finished yet
          select new {
            ProjectId = pProjectId,
            PriorityId = task.Priorities.Id,
            TaskId = task.Id,
            ResourceId = taskItem.Resources.Id,
            EstimatedDuration = taskItem.EstimatedDuration,
            TaskItemId = taskItem.Id
          };

查詢之前是否將更改保存到實體模型?

實體模型正在查詢數據庫以檢索這些值,如果您要向實體添加數據但尚未將其保存到數據庫中,則查詢將無法得知這些新值。

在查詢之前嘗試db.SaveChanges()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM