繁体   English   中英

Include 内部使用的 Lambda 表达式无效。 EF6,导航属性

[英]Lambda expression used inside Include is not valid. EF6, Navigation Property

我试图解决多对多的关系。 在数据库级别上,一切对我来说都很好,但是当我尝试获取该数据( inlcude )时,它失败了。

我得到:

Include 内部使用的 Lambda 表达式无效。

我叫/试过的:

var readRecipes = db.MyClasses. 
                     Include(blog => blog.SomeCollections).ThenInclude(post => post.Prop1).
                     Include(blog => blog.SomeCollections).ThenInclude(post => post.Prop2).

结构

主类:

public class MainClass{
// ...                   
public ICollection<NavigationProperty> NavigationPropertys; 
// ...               
public MainClass()
{

    this.NavigationPropertys = new Collection<NavigationProperty>(); 
}
}

导航属性:

public class NavigationProperty
    {
        public Guid ID { get; set; }



        [Required]
        public Guid? Prop1ID { get; set; }// 0,*

        [Required]
        public Guid? Prop2ID { get; set; }// 0,*

        [Required]
        public Guid MainClassID { get; set; }



        [Required]
        public Prop1 Prop1 { get; set; }

        [Required]
        public Prop2 Prop2 { get; set; }




        public MainClass MainClass { get; set; }



        [Required]
        public float Amount { get; set; }


        public NavigationProperty()
        {
            // todo: ?
        }
    }

我不知道,我做错了什么?

好的,我解决了我的问题。

代替:

public ICollection<NavigationProperty> NavigationPropertys; 

我应该使用:

public ICollection<NavigationProperty> NavigationPropertys { get; set; }; 

这使得 Lambda 崩溃。

谢谢你。

如果您还想包含导航属性的子项,您应该这样做:

Parent.Include(p => p.Children.Select(c => c.GrandChild));

或者如果每个孩子有很多孙子

Parent.Include(p => p.Children.SelectMany(c => c.GrandChildren));

或者如果每个父母只有一个孩子和一个孙子。

Parent.Include(p => p.Child.GrandChild);

我希望这有帮助。

编辑:我没有意识到你的问题是关于 ef-core。 我认为这是某种伪代码或自制扩展方法。

您是否已阅读 Microsoft 提供的有关此主题的 所有示例 否则,恐怕我没有足够的信息来帮助你处理这件事。

我需要了解的一件事是您如何配置Prop1和 Navigation 实体之间的关系。 我在您的 model 中没有看到外键。 当然,这不是必需的,具体取决于您如何使用modelBuilder中的DbContext在重写的OnModelCreating方法中配置关系,或者您如何使用属性来指示关系。 有关 ef-core 中的关系和指定关系的更多信息,请参见此处

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM