实体框架6错误 - ICollection不包含子实体的定义

时间:2014-07-10 01:10:14

标签: c# asp.net-mvc-5 entity-framework-6

我将实体框架6与MVC一起使用,并且我在控制器中使用此查询:

        using (var context = new MyDbContext())
        {

            IQueryable<ContentArticle> query;


            query = context.ContentArticle.Where(
                    c => c.ContentArticleSubdivisions.Subdivisions.Name == subdivision

编译器抱怨

'System.Collections.Generic.ICollection<MySite.DAL.Models.ContentArticleSubdivision>' does not contain a definition for 'Subdivisions'

但我的内容文章模型包含此属性:

public virtual ICollection<ContentArticleSubdivision> ContentArticleSubdivisions { get; set; }

我的内容文章细分模型包括:

public partial class ContentArticleSubdivision
{
    ...

    public virtual ICollection<Subdivision> Subdivisions { get; set; }
}

所以我做错了什么?我想我需要修改查询,以便它查找可能包含在ContentArticleSubdivisions集合中的所有可能的细分?

1 个答案:

答案 0 :(得分:1)

您需要使用某种基于集合的方法来执行此操作。我不确定你要在这里查询什么。我假设您想要所有与该名称匹配的细分文章。

query = context.ContentArticle.Where(
    c => c.ContentArticleSubdivisions.Any(cs => cs.Subdivisions.Any(s => s.Name == subdivision))
);

你也可以使用像这样的查询理解语法来简化这个

query = from ca in context.ContentArticle
        from cas in ca.ContentArticleSubdivisions
        from s in cas.Subdivisions
        where s.Name == subdivision
        select ca;