![](/img/trans.png)
[英]EF Core 3.1 - Include filtering throw an error 'Lambda expression used inside Include is not valid.'
[英]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.