我有一个关于大学管理的.net解决方案(使用实体框架,使用CodeFirst方法)。该项目的结构是这样的:实体框架:具有关系和更多关系的对象设计
- 数据访问(的DbContext和通用库)
- 实体(代码第一类)
- 服务(服务类)
- 网站(一个MVC项目,对于解释不重要)
为了使问题更容易,我只从我的域名谈(上实体层)大概有两班:
- 场
- 学生
的当然可以有很多学生。解决方案的目标是将学生添加到课程中(中间有一些验证)。
Course.cs
public class Course
{
[Key]
public int IdCourse { get; protected set; }
public string Name { get; set; }
public virtual ICollection<Student> Students { get; protected set; }
public void AddStudent(Student student)
{
// Some Validation
Students.Add(student);
}
}
正如你所看到的,类有增加学生课程的属性。 情况是,验证正在增长,现在非常复杂,它需要对数据库进行一些查询等等。所以课程有很多责任!
所以我认为,我需要一个服务来处理“添加”,并进行所有验证,并从课程类别远离这种责任。问题是,因为学生系列是私人成员从课程,我不能添加学生从服务类的课程。
另一种方式,我认为要解决的问题,是增加了相关实体(学生)的情况下(从服务),但它会打破我的库(因为我将不得不做出的DbContext上市)。如果我直接使用Service类中的DbContext,则存储库没有意义,不是吗?
那么,我该如何设计呢?或者我应该怎么做才能解决问题? 任何建议也会很受欢迎!
谢谢!
我会回答你的问题: 1)不,它不一定是一种方法。是的,我想要的是“注册”学生的概念。但我不知道如何设计类来进行验证并正确保存数据。我清楚了吗?你如何做到“登记”(不详细,但在更高的水平)? 2)是否有学生存在课程概念之外。确切地说,他们可以采取多种课程。但为什么它不应该因为这个私人?我不希望客户端应用程序(程序员)能够向学生添加课程或课程的学生,而无需进行正确的验证。 –