コード例 #1
0
ファイル: StudentService.cs プロジェクト: plurby/Registry
        public StatusTransport<StudentViewModel> SaveStudent(StudentViewModel model)
        {
            var transport = new StatusTransport<StudentViewModel>();
              var student = new Student(model);
              _context.Students.Attach(student, true);
              try
              {
            _context.SubmitChanges();
            // Retrieve most recent version.
            _context.Refresh(RefreshMode.OverwriteCurrentValues, student);
            transport.ViewModel = new StudentViewModel(student)
              { ClientId = model.ClientId };
            transport.SetSuccess();

            // Update all connected clients. Comment this line out to test
            // normal conflict resolution.
            BroadcastStudent(transport);
              }
              catch (ChangeConflictException exConflict)
              {
            // Retrieve most recent version.
            _context.Refresh(RefreshMode.OverwriteCurrentValues, student);
            transport.ViewModel = new StudentViewModel(student);

            // Mark result as stale.
            transport.SetStale(exConflict);
              }
              return transport;
        }
コード例 #2
0
ファイル: StudentService.cs プロジェクト: plurby/Registry
 private void BroadcastStudent(StatusTransport<StudentViewModel> transport)
 {
     var hub = _hubConn.CreateProxy(typeof(StudentHub).Name);
       _hubConn
       .Start()
       .ContinueWith(_ => hub.Invoke("BroadcastUpdatedStudent", transport));
 }
コード例 #3
0
ファイル: StudentService.cs プロジェクト: plurby/Registry
 public StatusTransport<StudentViewModel> GetStudentById(int id)
 {
     var transport = new StatusTransport<StudentViewModel>();
       var student = _context.Students.Single(x => x.Id == id);
       transport.ViewModel = new StudentViewModel(student);
       transport.SetSuccess();
       return transport;
 }
コード例 #4
0
ファイル: StudentHub.cs プロジェクト: plurby/Registry
  public void BroadcastUpdatedStudent(StatusTransport<StudentViewModel> 
transport)
  {
      Clients.updateStudent(transport);
  }