2013-10-31 6 views
1

대학 관리에 대한 .Net 솔루션 (CodeFirst 방식을 사용하는 Entity Framework)이 있습니다.Entity Framework : 관계가있는 개체 디자인

  • DATAACCESS (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을해야하기 때문에 내 저장소을 (휴식 것이 공공의). 그리고 DbContext를 Service 클래스에서 직접 사용하면 리포지토리에 아무런 문제가 없습니다.

      그래서 어떻게 디자인해야합니까? 또는 문제를 해결하기 위해 무엇을해야합니까? 어떤 제안도 매우 잘받을 것입니다!

      감사합니다.

    답변

    관련 문제