我有像Project,Client,Task这样的实体,每个实体都应该有帖子列表(也就是讨论)。问题是,由于每个实体(项目,客户端,...)都映射到它自己的表,我不能通过“owner_id”从讨论中引用该实体,因为它是具有id = 1的客户端和具有id的项目的ambigious = 1并且讨论不知道它是否属于项目或客户。我想避免为客户和项目的另一个独立讨论实体提供独立的讨论实体。(因为后来我可能想要将讨论添加到另一个实体,因此它不是真正“可扩展”)。我知道我可以将discriminator属性(列)添加到讨论中,以区分clientDiscussion和projectDiscussion。我想知道这是否是做这种事情的正确方法。你嘀咕什么?
答案 0 :(得分:0)
就个人而言,你需要创建一个抽象的实体。
EntityType<-Entity<-EntityDiscussion->Discussion
Project / Client / Task中的字段有何不同?
答案 1 :(得分:0)
讨论是否只能涉及单个实体?如果是这样,那么你使用鉴别器是我所见过的一种方法,你已经概述了为什么明显的选择对你没用。
我的直觉是,在现实世界中,讨论并不总是指一种事物。因此,您可能还需要一个“主题”实体,其中“讨论”包含许多主题,但仍然需要一个鉴别器。