1

我想使用抽象基础实体在我的 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

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

4

1 回答 1

0

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

于 2012-07-27T09:03:22.263 回答