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 に答える