.net 使用集合属性对实体建模

.net 使用集合属性对实体建模,.net,wpf,observablecollection,data-modeling,class-design,.net,Wpf,Observablecollection,Data Modeling,Class Design,我想设计一个电影班。现在,一部电影将有多种类型。电影《复仇者》有多种类型:动作片、冒险片、科幻片。现在,我的应用程序维护了所有类型的列表,从中可以为电影分配子集 我现有的模型设计有一个电影实体,包含整个类型列表的集合。流派类只是有一个IsSelected属性来帮助识别已分配给特定电影的流派子集。这提供了一个优势,因为当我设计用户界面来创建新电影时,我会显示所有可用的类型,用户从中选择/检查适用于电影的类型 public class Movie { public ObservableCol

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

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

public class Movie
{
    public ObservableCollection<Genre> MovieGenres { get; set; }
}
公共类电影
{
公共可观测集合电影类型{get;set;}
}
然而,我认为这是这种方法的一个缺点。假设我有大约25种类型的列表和大约500部电影,那么创建了大约25 x 500种类型的对象

你认为这应该避免吗

有没有更好的方法将类型与电影对象关联起来,从而减少创建如此多类型对象的需要,并提供相同的UI优势

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


(我没有使用任何ORM工具,也不打算在将来使用)

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

通常,在
Movie
类中定义一个多值引用属性
genres
,该属性将只保存指定给特定电影的类型


请注意,从逻辑/概念上讲,您处理的是
电影
电影流派
之间的单向关联,为电影分配流派。

我只将分配给该电影的流派存储在电影对象上,并具有添加新流派的单独功能。例如,考虑添加标签的SE系统。如果您真的想维护“显示所有类型并选择/取消选择项目”,那么我将有一个所有类型的单一列表,并以其他方式将选中状态与selectedMovie.genres列表同步。:)你回答的第一部分似乎很有说服力。然而,拥有一个类型的枚举将使它成为一个固定的列表。全局类型列表可以由用户管理,也可以由用户管理。不管怎样,我想我会弄明白的。我现在主要关心的是如何将用户界面编程为sinc,并使用分配给各个电影的类型子集。谢谢。好的,你是对的,如果类型列表不是(相当)固定的,那么你不能使用枚举,但需要另一个类。我将编辑我的答案。