使用抽象实体

时间:2012-07-27 08:56:16

标签: entity-framework abstract

我想使用抽象基础实体在我的EF模型(.edmx)中使用泛化。

所以我做了以下

abstract entity

我在基础实体上设置了抽象标志

abstract setting

预期的输出类似于以下

desired result

然而,当我查看生成的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

我是否误解了抽象实体的使用?

1 个答案:

答案 0 :(得分:0)

不,你没有,但它只是EF如何使用与基本实体的关系的方式 - 实体必须有一个表(即使它是抽象的)才能创建关系。如果您需要预期的模型,则必须将关系移动到派生表。