2014-11-15 2 views
0

다음 코드는 올바르게 작동하지만 성능을 향상시킬 수있는보다 효율적인 방법이 있는지 궁금합니다. 이것의 농담은 2 테이블 프로필과 추종자가 있다는 것입니다. 이 코드는 profiles 테이블에서 2 개의 레코드를 수정하고 followers 테이블에 레코드를 추가합니다.mvc4 엔티티 쿼리 성능 향상을 위해 성능을 향상시키는 방법

[HttpPost] 
    public void AddFollower(int id,following followers) 
    { 
     // me wants to follows followee 
     int me = Convert.ToInt32(User.Identity.Name); 
     using (var scope = new TransactionScope()) 
     { 
      followers.me = me; 
      followers.ProfileID = id; 
// Add new record on followers table 
      db.followings.Add(followers); 
      db.SaveChanges(); 
// Add +1 following for this persons profile & save it 
      var UserA = (from s in db.profiles where s.ID == me select s).FirstOrDefault(); 
      UserA.following = UserA.following + 1; 
      db.Entry(UserA).State = System.Data.Entity.EntityState.Modified; 
      db.SaveChanges(); 
// Add +1 followers for this persons profile & save it 
      var UserB = (from s in db.profiles where s.ID == id select s).FirstOrDefault(); 
      UserB.followers = profiles.followers + 1; 
      db.Entry(UserB).State = System.Data.Entity.EntityState.Modified; 
      db.SaveChanges(); 
      scope.Complete(); 


     } 



    } 

위의 코드는 사용자 A가 다음 대부분의 데이터베이스에 자신의 프로필을 모두 수정 사용자 B를 따라하기로 결정하면 기능과 같은 트위터이었다 있습니다. 이것은 사용자 A를 1 씩 증가시키고 사용자 B 추종자를 1 씩 증가시킨 다음 추종자 테이블에서 관계를 생성하는 오프사이드에 의해 수행됩니다. 이 코드는 완벽하게 작동하지만 더 효율적으로 작성할 수 있는지 여부는 알지 못합니다. 웹 사이트에 많은 사용자가있는 경우이 코드로 인해 작업 속도가 느려질 수도 있습니다.

답변

0

숫자를 저장하는 것은 실제로 중복됩니다. 그것은 계산 된 값이며 간단한 계산으로 쉽게 계산할 수 있습니다.

+0

숫자를 따르는 추종자를 삭제하고 누군가가 카운트 쿼리를 사용하기를 원할 때마다이를 삭제한다는 의미입니까? – user1591668

+0

예. 얼마나 많은 요청을했는지는 모르겠지만 트위터처럼 그렇게 생각하지는 않습니다. 그렇게하면됩니다. –

관련 문제