/// <summary>
 /// Initializes a new instance of the <see cref="MnStudentCEISProgramAssociation" /> class.
 /// </summary>
 /// <param name="Id">Id (required).</param>
 /// <param name="BeginDate">The month, day, and year on which the Student first received services. (required).</param>
 /// <param name="EducationOrganizationReference">EducationOrganizationReference (required).</param>
 /// <param name="ProgramReference">ProgramReference (required).</param>
 /// <param name="StudentReference">StudentReference (required).</param>
 /// <param name="EndDate">The month, day, and year on which the Student exited the Program or stopped receiving services..</param>
 /// <param name="ReasonExitedDescriptor">The reason the child left the Program within a school or district..</param>
 /// <param name="ServedOutsideOfRegularSession">Indicates whether the Student received services during the summer session or between sessions..</param>
 /// <param name="Etag">A unique system-generated value that identifies the version of the resource..</param>
 public MnStudentCEISProgramAssociation(string Id = default(string), DateTime?BeginDate = default(DateTime?), EdFiEducationOrganizationReference EducationOrganizationReference = default(EdFiEducationOrganizationReference), EdFiProgramReference ProgramReference = default(EdFiProgramReference), EdFiStudentReference StudentReference = default(EdFiStudentReference), DateTime?EndDate = default(DateTime?), string ReasonExitedDescriptor = default(string), bool?ServedOutsideOfRegularSession = default(bool?), string Etag = default(string))
 {
     // to ensure "Id" is required (not null)
     if (Id == null)
     {
         throw new InvalidDataException("Id is a required property for MnStudentCEISProgramAssociation and cannot be null");
     }
     else
     {
         this.Id = Id;
     }
     // to ensure "BeginDate" is required (not null)
     if (BeginDate == null)
     {
         throw new InvalidDataException("BeginDate is a required property for MnStudentCEISProgramAssociation and cannot be null");
     }
     else
     {
         this.BeginDate = BeginDate;
     }
     // to ensure "EducationOrganizationReference" is required (not null)
     if (EducationOrganizationReference == null)
     {
         throw new InvalidDataException("EducationOrganizationReference is a required property for MnStudentCEISProgramAssociation and cannot be null");
     }
     else
     {
         this.EducationOrganizationReference = EducationOrganizationReference;
     }
     // to ensure "ProgramReference" is required (not null)
     if (ProgramReference == null)
     {
         throw new InvalidDataException("ProgramReference is a required property for MnStudentCEISProgramAssociation and cannot be null");
     }
     else
     {
         this.ProgramReference = ProgramReference;
     }
     // to ensure "StudentReference" is required (not null)
     if (StudentReference == null)
     {
         throw new InvalidDataException("StudentReference is a required property for MnStudentCEISProgramAssociation and cannot be null");
     }
     else
     {
         this.StudentReference = StudentReference;
     }
     this.EndDate = EndDate;
     this.ReasonExitedDescriptor        = ReasonExitedDescriptor;
     this.ServedOutsideOfRegularSession = ServedOutsideOfRegularSession;
     this.Etag = Etag;
 }