2014-03-31 121 views
0

我的問題圍繞着最佳實踐演變而來。最佳實踐 - ASP.NET/Entity Framework

現在即時使用實體框架與ASP.NET,並希望它的頂級性能。

在添加一個記錄之前,您通常會在數據庫中檢查現有記錄,還是依賴拋出的異常或者甚至預期給定的參數是相關的和活動的。

例子:(ASP.NET與Identity)

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

這個問題可能更適合[程序員](http://programmers.stackexchange.com/)。 –

+0

我不確定爲什麼你擔心將用戶添加到角色的最佳性能......這不是一個巨大的阻止操作。 –

+0

如果您想要最佳性能,那麼不要依賴拋出異常......永遠。例外情況在性能方面被歸類爲「昂貴」,不應在正常的邏輯/程序流程中使用。如果您要添加新用戶,請先執行檢查。如果我是你,我會創建你的應用程序,然後解決任何性能問題。 (但請始終記住性能,這是你越多越好的方案) –

回答

0

除了是一個非常基礎的意見的問題,我認爲有適當的指導原則可以遵循。

你會在添加一個之前檢查數據庫中的現有記錄,還是依靠拋出的異常或者甚至期望給出的參數是相關的和活動的。

這在我看來完全取決於上下文。

對於非常高的事務,我會寫一個存儲過程。

否則它取決於操作的併發性,在這個特殊情況下,我不認爲多人會嘗試將同一個人添加到同一個角色,因此異常會被最小化和接受。