我想使用抽象基础实体在我的EF模型(.edmx)中使用泛化。
所以我做了以下
我在基础实体上设置了抽象标志
预期的输出类似于以下
然而,当我查看生成的SQL时,我注意到它正在创建我不想要的抽象基表。 问题是ConcreteEntity_A或ConcreteEntity_B中的Id可以是相同的,所以如果它也被添加到基本实体我有问题。
-- Creating table 'AbstractBaseSet'
CREATE TABLE [dbo].[AbstractBaseSet] (
[Id] int NOT NULL
);
GO
-- Creating table 'AbstractBaseSet_ConcreteEntity_A'
CREATE TABLE [dbo].[AbstractBaseSet_ConcreteEntity_A] (
[Id] int NOT NULL
);
GO
-- Creating table 'AbstractBaseSet_ConcreteEntity_B'
CREATE TABLE [dbo].[AbstractBaseSet_ConcreteEntity_B] (
[Id] int NOT NULL
);
GO
我是否误解了抽象实体的使用?
答案 0 :(得分:0)
不,你没有,但它只是EF如何使用与基本实体的关系的方式 - 实体必须有一个表(即使它是抽象的)才能创建关系。如果您需要预期的模型,则必须将关系移动到派生表。