查看域模型的模型设计多对多关系

时间:2013-12-16 09:22:25

标签: asp.net-mvc viewmodel

我需要帮助的设计问题。最好用一个例子来描述。 使用以下域模型: - 学生 - 报名 - 课程

学生和课程之间存在多对多的关系,通过注册表实现,即注册具有StudentID(FK)和CourseID(FK)。 Student和Course类都有一个Navigation属性,即另一个的ICollection。

我正在使用View模型,并希望使用简单的CRUD功能来添加,编辑,删除学生和课程。 View模型与其关联的Domain模型非常相似。

显示学生的详细信息很简单,但是在显示学生的课程详细信息时,以下哪种设计是最佳方法?

  1. 在学生视图模型中,声明注册域模型的ICollection? 然后在视图中可以访问注册详细信息。 我觉得这样就解开了View模型试图实现的目标,那就是从域模型中获得一个抽象层。使用此设计,可以通过学生视图模型从视图访问注册域模型。

  2. 为Enrollment类创建一个View模型。 这与它的域模型相同。从视图模型中保存域模型的值不执行任何其他操作。必须通过AutoMapper进行映射。不知道如何制作这个选项,感觉效率低下。

1 个答案:

答案 0 :(得分:2)

首先,Enrollment不应该是域模型。 Enrollment只是一个数据库表,用于指定从StudentCourse的多对多关系。

我的建议是在List域模型中创建Course Student个,并使用NHibernateFluent NHibernate来映射{{1}然后,从映射创建多对多关系,您只需从Student实例中检索Course

此外,在使用映射而不是在代码中编写一些SQL语句时,可以更自由地使用级联操作。