使用集合 属性 对实体建模

Modelling an entity with a collection property

我想设计一部电影class。现在,一部电影将分配有多种类型。前任。电影复仇者联盟有类型:动作、冒险、科幻。现在我的应用程序维护了一个所有类型的列表,可以从中将一个子集分配给一部电影。

我现有的模型设计有一个 Movie 实体,其中包含整个 Genre 列表的集合。流派 class 只是有一个 IsSelected 属性 来帮助识别已分配给特定电影的流派子集。这提供了一个优势,因为当我设计用户界面来创建新电影时,我会显示所有可用的类型,其中用户 selects/checks 适用于电影的类型。

public class Movie
{
    public ObservableCollection<Genre> MovieGenres { get; set; }
}

但是,我认为这种方法有一个缺点。假设我有大约 25 个流派列表和大约 500 部电影,那么将创建大约 25 x 500 个流派对象。

您认为应该避免这种情况吗?

有没有更好的方法将流派与电影对象相关联,这将减少创建如此多的流派对象的需要并提供相同的 UI 优势?

或者有没有更好的方法来设计我可以通过模型设计利用的用户界面?

(我没有使用任何ORM工具,以后也不打算使用)

对于像您这样的问题,您的方法肯定不是推荐的方法。

通常,人们会在 Movie class 中定义一个多值引用 属性 genres,而这个 属性 将只包含流派分配给特定的电影。

请注意,logically/conceptually,您处理 MovieMovieGenre 之间的单向关联,为电影分配流派。