【发布时间】:2014-05-21 15:04:35
【问题描述】:
虽然这个问题是在 MVVM 的背景下进行的,但我认为它可以推广到任何 MV* 架构。
在创建模型层时,我习惯于直接引用对象来表示关系,例如:
class Course {
CourseID ID { get; }
string Name { get; }
}
class Student {
IEnumerable<Course> EnrolledCourses { get; }
}
但是,我发现从存储中重建此类对象层次结构变得越来越繁重。如果在模型层没有 DI 的好处,我将面临不愉快的选择:使用带有所有伴随属性和其他令人头疼的重型 ORM,或者使用微 ORM(我的偏好),然后煞费苦心地重建对象图手工。
我正在考虑完全放弃直接引用的想法,转而支持以下内容:
class Course {
CourseID ID { get; }
string Name { get; }
}
class Student {
IEnumerable<CourseID> EnrolledCourses { get; }
}
通过这种方式,我的模型层开始更接近于关系数据,我一直认为这在传统上是不受欢迎的(因此偏爱 ORM)。
在我的代码中,应用程序的数据通常通过 Repository 模式暴露给更高级别,作为响应式提要和/或 iEnumerables。这使得通过查询和/或按键过滤器按需检索和显示相关数据变得非常容易。不像直接参考那么容易,但很接近。
那么 - 反对在不引用其他类型的情况下建模域对象的主要论点是什么?另外,我试图找到有关此的讨论,但没有看到太多,可能是我缺少正确的搜索词吗?
【问题讨论】:
标签: c# oop model composition