2014-03-31 4 views
0

내 질문이 최선의 방법으로 전개됩니다.모범 사례 - ASP.NET/Entity Framework

지금은 ASP.NET에서 엔티티 프레임 워크를 사용하고 있으며 최고의 성능을 원합니다.

일반적으로 데이터베이스를 추가하기 전에 기존 레코드를 체크인 하시겠습니까? 아니면 던져진 예외에 의존 하시거나 주어진 매개 변수가 관련성이 높고 활성화되어 있다고 생각하십니까?

예 : (신원과 ASP.NET)

public ResultWrapper AddUserToRole(string user, bool userId, string role, bool roleId) 
{ 
    ApplicationUser appUser = FindUser(user, userId); 
    ApplicationRole appRole = FindRole(role, roleId); 

    if (appUser == null || appRole == null) 
     return new ResultWrapper(false, "Unknown user or role"); 
    else 
    { 
     IdentityResult result = userManager.AddToRole(appUser.Id, appRole.Name); 
     db.SaveChanges(); // AutoSaveChanges is false, so update. 
     return new ResultWrapper(result.Succeeded, result.Errors); 
    } 
} 
+4

이 질문은 [Programmers] (http://programmers.stackexchange.com/)에 더 적합 할 수 있습니다. –

+0

왜 사용자가 역할에 사용자를 추가 할 때 최고의 성능을 기대하는지 확신 할 수 없습니다. 거대한 차단 작업이 아닙니다. –

+0

최고 성능을 원한다면 예외를 던지는 것에 의존하지 마십시오. 예외는 성능 측면에서 '비싼'것으로 분류되며 일반 논리/프로그램 흐름에는 사용하면 안됩니다. 새 사용자를 추가하는 경우 먼저 확인을 수행하십시오. 내가 당신이라면 당신의 애플리케이션을 만들고 성능 문제를 정리할 것입니다. (그러나 항상 성능을 염두에 두십시오. 더 많은 프로그램에서 더 나은 결과를 얻을 수 있습니다.) –

답변

0

아주 의견을 기반으로 질문을되고 게다가, 나는 사람이 따를 수있는 적절한 가이드 라인이 있다고 생각합니다.

일반적으로 데이터베이스를 추가하기 전에 기존 레코드를 확인 하시겠습니까? 아니면 예외를 던지거나 주어진 매개 변수가 관련 있고 활성화되어 있다고 생각하십니까?

이것은 완전히 내 의견에 따라 다릅니다.

매우 높은 거래의 경우 저장 프로 시저를 작성합니다.

그렇지 않으면 작업의 동시성에 따라 다르며이 특정 인스턴스에서 여러 사람이 동일한 역할에 같은 사람을 추가하려고 시도하지 않는다고 생각하므로 예외가 최소화되고 허용됩니다.