继承和导航性能

问题描述:

我有这样的关系:继承和导航性能

class FirstParent { 
    public SecondParent SecondRecord { get; set; } 
} 

class SecondParent { 
    public IEnumerable<FirstParent> FirstRecords { get; set; } 
} 

class FirstChild1 : FirstParent { 
    public String StrInFirstChild1{ get; set; } 
} 

class SecondChild1 : SecondParent { 
    public String StrInSecondChild1{ get; set; } 
} 

class FirstChild2 : FirstParent { 
    public String StrInFirstChild2{ get; set; } 
} 

class SecondChild2 : SecondParent { 
    public String StrInSecondChild2{ get; set; } 
} 

相关类FirstChild1记录是类型SecondChild1的。 class FirstChild2的相关记录属于SecondChild2类型。

当我在写结果

var record = from ch in context.FirstParent.OfType<FirstChild1>() select ch.SecondRecord; 

我也有SecondParent对象。 发生了什么?如何加载SecondChild1对象?

+1

我不觉得有什么问题。您要求FirstParent实体集合中FirstChild1类型的项目(我假设这是一个子集合)。然后在每个访问SecondParent类型的导航属性SecondRecord上。所以我希望查询只返回SecondParent类型的实例。也许如果你描述你想要的查询的意图,它会更容易帮助。 – 2012-04-27 10:50:01

我找到了一个解决方案。我从所有四个表中加载记录,并加入以收集匿名对象所需的信息。