Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 多态子对象属性上的即时加载 公共类父类 { 公共ICollection子项{get;set;} } 公营儿童 { } 公共班级男生:儿童 { 公共玩具{get;set;} } 公共班级女生:儿童 { 公共图书{get;set;} }_Entity Framework_Inheritance - Fatal编程技术网

Entity framework 多态子对象属性上的即时加载 公共类父类 { 公共ICollection子项{get;set;} } 公营儿童 { } 公共班级男生:儿童 { 公共玩具{get;set;} } 公共班级女生:儿童 { 公共图书{get;set;} }

Entity framework 多态子对象属性上的即时加载 公共类父类 { 公共ICollection子项{get;set;} } 公营儿童 { } 公共班级男生:儿童 { 公共玩具{get;set;} } 公共班级女生:儿童 { 公共图书{get;set;} },entity-framework,inheritance,Entity Framework,Inheritance,我想给所有的父母和孩子装玩具,给每个孩子装书 如何使用Linq Include()编写?无法使用Include完成,但可以通过投影完成-只要您选择这些实体,EF将为您连接导航属性(必须启用更改跟踪): var query=db.Parents.Select(p=>new { 父项=p, //获取父实体的子实体 孩子们, //给父母的孩子们买玩具 Toys=p.Children.OfType()。选择(b=>b.Toy), //为父母的女儿们买书 Books=p.Children.OfType()

我想给所有的父母和孩子装玩具,给每个孩子装书


如何使用Linq Include()编写?

无法使用
Include
完成,但可以通过投影完成-只要您选择这些实体,EF将为您连接导航属性(必须启用更改跟踪):

var query=db.Parents.Select(p=>new
{
父项=p,
//获取父实体的子实体
孩子们,
//给父母的孩子们买玩具
Toys=p.Children.OfType()。选择(b=>b.Toy),
//为父母的女儿们买书
Books=p.Children.OfType()。选择(g=>g.Book),
} );
var results=query.ToArray().Select(at=>at.Parent);

可能重复@GertArnold,这不是重复
Children
是多态集合,而不是继承的导航属性。伊恩,你找到解决办法了吗?“我也在看。”上次我看的时候,急切的装载似乎正在改善。我不确定它是否解决了这个问题。:)这在EF6中很容易解决吗?对不起,这方面的情况并没有本质上的改变。+1谢谢。有没有一种方法不需要使用
ToArray()
,这样我就可以在
IQueryable
上的可链式方法中使用它?当然,只有在枚举查询之后才能投影到
at.Parent
public class Parent 
{
  public ICollection<Child> Children {get;set;}
}

public class Child
{      
}

public class Boy : Child
{  
  public Toy Toy {get;set;}    
}

public class Girl : Child
{      
  public Book Book {get;set;}
}
var query = db.Parents.Select( p => new
{
    Parent = p,
    // get the children entities for the parent
    Children = p.Children,
    // get the toys for the parent's boys
    Toys = p.Children.OfType<Boy>().Select( b => b.Toy ),
    // get the books for the parent's girls
    Books = p.Children.OfType<Girl>().Select( g => g.Book ),
} );

var results = query.ToArray().Select( at => at.Parent );