假设我有 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; }
}
现在,用户和标签之间以及帖子和标签之间存在多对多的关系。
简化:我有一个标签列表,我希望能够同时标记用户和帖子,同时标签保持独立。
现在,我可以创建一个映射并映射一个双多对多,创建两个表:Users_Tags 和 Posts_Tags,但我需要它们在同一个表中。
我需要一个:Entity_Tags:Entity_Id,Tag_Id,Decriminator
通常我会创建一个基类,Tag 和 Post 都继承自...“TagContainer”。创建一个:TagContainers_Tags:TagContainer_Id、Tag_Id
现在的问题是,在我的情况下,在我想到的实体中,它们共享相同的基类是没有意义的。这是因为我有另一个基类做同样的事情会发生冲突。并且让该类继承这些基类之一在应用程序方面没有意义。
如果 EF 支持接口,我当然会通过让我的类继承必要的接口来支持第一个和第二个多对多实体来解决这个问题。
我几乎在寻找一种方法来让 EF 支持基于鉴别器的多对多表,而无需向我的实体提供基类。
有什么建议么?