【发布时间】:2016-10-28 10:18:45
【问题描述】:
我想在我的应用程序中使用 Table Per Concrete 类型继承:
public class Row {
public int Id {get;set;}
public string Name {get;set;}
}
public class ExtendedRow : Row {
public int Weight {get;set;}
}
每个类都需要映射到自己的视图,ExtendedRow 视图拥有Row 视图的所有列。
我的配置是:
modelBuilder.Entity<Row>().Map(m => {
m.MapInheritedProperties();
m.ToTable("Row");
});
modelBuilder.Entity<ExtendedRow >().Map(m => {
m.MapInheritedProperties();
m.ToTable("ExtendedRow");
});
查询ExtendedRow 就可以了。但是,查询Row 会生成以下 SQL:
SELECT
[Extent1].[Id] AS [Id],
[Extent1].[Name] AS [Name]
FROM [dbo].[Row] AS [Extent1]
UNION ALL
SELECT
[Extent2].[Id] AS [Id],
[Extent2].[Name] AS [Name]
FROM [dbo].[ExtendedRow] AS [Extent2]
EF 为什么要添加UNION ALL 运算符?我该如何解决?
【问题讨论】:
标签: sql .net entity-framework inheritance entity-framework-6