2013-04-28 57 views
2

我有在實體框架中急切加載的問題。急於加載條件

我有兩個表格ScrappyTemplate和ScarppyTemplateFields,表格之間的關係是一對多的。請注意,這兩個表中有IsActive標誌

我想獲取來自ScrappyTemplate和ScrappyTemplateFields的數據,其中IsActive ==使用下面的代碼真,即時通訊通過預先加載

using (Entities entities = new Entities()) 
{ 
var content = entities.ScrappyTemplates.Include(entities.GetTableName<ScrappyTemplateField> (false)).Where(c => c.ContentSourceId == contentSourceId && c.IsActive == true && c.ScrappyTemplateFields.Any(d=>d.IsActive==true)).ToList<ScrappyTemplate>(); 
} 

即時得到的提取數據結果集,這是不正確的!!,我想要得到Child表的結果集,即ScrappyTemplateFields,其中IsActive = true,但它返回所有行ir-各自的IsActive標誌。

請任何人幫助我,如何在Child表中放置一個條件。

在此先感謝

回答

1

.Include()不允許對相關實體進行過濾。試試這個:

using (Entities entities = new Entities()) 
     { 
     var query = from template in entities.ScrappyTemplates 
         where template.ContentSourceId = contentSourceId && template.IsActive = true && template.ScrappyTemplateFields.Any(d=>d.IsActive==true) 
         select new { 
          Template = template, 
          TemplateFields = template.ScrappyTemplateFields.Where(d=>d.IsActive==true) 
         }; 
     var content = query.ToList().Select(t=>t.Template); 
     } 
+0

感謝慶,它似乎是工作的解決方案,但反正是有,我可以使用,而不是使用匿名類型 – 2013-04-28 08:33:10

+0

恐怕沒有別的辦法實際的實體。讓我們看看是否有其他人有辦法。 – 2013-04-28 09:05:28

+0

我最終通過將Anonymous轉換爲Actual來實現它。 – 2013-04-28 09:37:12