0

有人可以帮助我了解如何最好地模拟组合关系吗?

例如,如果我有一个可以有很多时间表的学生,我会大致创建:

class Student
{
  prop long Pk { get; set; }
  prop string Name { get; set; }
  prop List<Schedule> Schedules { get; set; }
}

class Schedule
{
  prop string Semester { get; set; }
  prop List<Course> Courses{ get; set; }
}

在某个地方,我可能有一个 Schedule 对象,并希望确定它属于哪个学生。我希望能够写作Schedule.Student.Name,并收到学生的名字作为回报。我是否也将 Student 属性添加到我的 Schedule 对象?

我的应用程序一直在将 Student Pk 传递给我的 Schedule 对象以执行 CRUD 功能。我将 Student PK 保留为私有变量,以便在需要时对其进行处理。

随着我的应用程序变得越来越复杂,我发现很难维护我一直在做的事情。你对我有什么建议?我还可以咨询什么(书籍/链接)来复习和更好地掌握这些基础知识?

4

1 回答 1

2

“我希望能够编写 Schedule.Student.Name,并接收学生的姓名作为回报。我是否也将 Student 属性添加到我的 Schedule 对象中?” 是的。

您所描述的内容(支持用于查找的外键和用于轻松导航对象图的对象引用)听起来非常适合对象关系映射器(ORM)。一个好的 ORM 将使用 FK/PK 自动为您加载关联的对象/对象(例如,如果 Schedule 具有 StudentPK 字段,则映射器将为您处理 Student 属性的加载/映射)。这种类型的产品有很多:您可以使用内置的 .NET 框架,如Entity Framework,开源框架,如NHibernate,或商业产品,如LightSpeedLLBLGenEntitySpacesOpenAccess(披露:我在一家制作商业 ORM 的公司工作)。谷歌 ORM 或对象关系映射器,或查看 Wikipedia,以了解我所描述的事物的概述。

于 2009-04-27T22:48:50.183 回答