Entity framework 如何对每个类型映射只查询表的一个级别?

Entity framework 如何对每个类型映射只查询表的一个级别?,entity-framework,entity-framework-4.1,ef-code-first,table-per-type,Entity Framework,Entity Framework 4.1,Ef Code First,Table Per Type,我使用EntityFramework4.1的代码优先方法将类层次结构映射到一系列表 我定义了以下类: [Table("FooBases")] public class FooBase { public int Id { get; set; } public string Name { get; set; } } [Table("Foo1s")] public class Foo1 : FooBase { public string Details { get; set;

我使用EntityFramework4.1的代码优先方法将类层次结构映射到一系列表

我定义了以下类:

[Table("FooBases")]
public class FooBase
{
    public int Id { get; set; }
    public string Name { get; set; }
}

[Table("Foo1s")]
public class Foo1 : FooBase
{
    public string Details { get; set; }
}

[Table("Foo2s")]
public class Foo2 : FooBase
{
    public string Description { get; set; }
}
因此,这将创建三个表,其中公共属性(Id和Name)存储在
FooBase
表中

在一个特殊情况下,我只对任何类型的
FooBase
对象的名称列表感兴趣。我不在乎它是
Foo1
还是
Foo2
。我启动一个新的数据上下文并运行如下查询:

var names = ctx.Set<FooBase>().Select(f => f.Name);

有没有办法告诉实体框架我不关心其他表;我只需要类层次结构顶层的数据,这样就不需要查询顶层表以外的任何内容了?

这是一个表/类型继承映射。应该在哪一种情况下解决这一问题。目前没有办法改进它。

太好了!谢谢你,拉迪斯拉夫。很高兴知道它正在被修复。
SELECT 
[Extent1].[Name] AS [Name]
FROM  [dbo].[FooBases] AS [Extent1]
LEFT OUTER JOIN  (SELECT 
    [Extent2].[Id] AS [Id]
    FROM [dbo].[Foo1s] AS [Extent2]
UNION ALL
    SELECT 
    [Extent3].[Id] AS [Id]
    FROM [dbo].[Foo2s] AS [Extent3]) AS [UnionAll1] ON [Extent1].[Id] = [UnionAll1].[Id]