2

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

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

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

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>();
}

我得到了结果集,这是不对的!!,我想得到子表的结果集,即 IsActive=true 的 ScrappyTemplateFields,但它返回所有行而不是相应的 IsActive 标志。

请任何人帮助我,如何在子表中放置一个条件。

提前致谢

4

1 回答 1

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);
       }
于 2013-04-28T07:48:57.077 回答