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

本文关键字:实体 包含 定义 ICollection 框架 错误 | 更新日期: 2023-09-27 18:12:10

我使用实体框架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; }
}

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

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

您需要使用某种基于集合的方法来做到这一点。我不太确定你想在这里查询什么。我假设你想要所有的文章,其中一个细分存在匹配的名称。

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;