【问题标题】:Entity Framework 6 error - ICollection does not contain a definition for sub-entity实体框架 6 错误 - ICollection 不包含子实体的定义
【发布时间】:2014-07-10 09:15:39
【问题描述】:

我正在使用带有 MVC 的 Entity Framework 6,并且我在控制器中使用此查询:

        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 集合中的所有可能的细分?

【问题讨论】:

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


    【解决方案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;
    

    【讨论】:

    • 是的,没错,这就是我想要做的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 1970-01-01
    相关资源
    最近更新 更多