渴望加载条件

时间:2013-04-28 07:04:41

标签: linq entity-framework linq-to-sql entity-framework-4

我对实体框架中的热切加载有疑问。

我有两个表ScrappyTemplate和ScarppyTemplateFields,表之间的关系是一对多。请注意,这两个表都有IsActive标志

我想从ScrappyTemplate和ScrappyTemplateFields中获取数据,其中IsActive == True,我使用以下代码通过预先加载来获取数据

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,但它返回所有行,并且相应的IsActive标志。

请任何人帮助我,如何在Child表中添加条件。

提前致谢

1 个答案:

答案 0 :(得分: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);
       }