3

3つのクラスがあるとしましょう:

public class Tag {
    public string Name { get; set; }
}

public class Post {
     public virtual IList<Tag> Tags { get; set; }
}

public class User {
     public virtual IList<Tag> Tags { get; set; }
}

現在、ユーザーとタグの両方、および投稿とタグの間に多対多の関係があります。

簡略化: タグのリストがあります。タグは独立したままで、ユーザーと投稿の両方にタグ付けできるようにしたいです。

ここで、マップを作成し、2 つの多対多をマップして、Users_Tags と Posts_Tags の 2 つのテーブルを作成するだけで済みますが、それらを同じテーブルに配置する必要があります。

必要なもの: Entities_Tags: Entity_Id、Tag_Id、記述子

通常、タグとポストの両方が「TagContainer」から継承する基本クラスを作成します。作成: TagContainers_Tags: TagContainer_Id、Tag_Id

今の問題は、私の状況では、私が念頭に置いているエンティティでは、それらが同じ基本クラスを共有することは意味がないということです。これは、競合する同じことを行う別の基本クラスがあるためです。そして、そのクラスにこれらの基本クラスの 1 つを継承させることは、アプリケーションに関しては意味がありません。

EF がインターフェイスをサポートしていた場合、もちろん、最初と 2 番目の多対多エンティティの両方をサポートするために必要なインターフェイスをクラスに継承させることで、これを解決していました。

エンティティに基本クラスを提供することなく、EF で Discriminator ベースの多対多テーブルをサポートする方法を探しています。

助言がありますか?

4

1 に答える 1