【发布时间】:2014-03-31 22:56:07
【问题描述】:
我的问题围绕最佳实践展开。
现在我正在使用带有 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);
}
}
【问题讨论】:
-
这个问题可能更适合Programmers。
-
我不知道您为什么担心将用户添加到角色的最佳性能......这不是一个巨大的阻塞操作。
-
如果您想获得最佳性能,那么不要依赖抛出异常......永远。异常在性能方面被归类为“昂贵”,不应在正常逻辑/程序流程中使用。如果您要添加新用户,请先进行检查。如果我是你,我会创建你的应用程序,然后解决任何性能问题。 (但始终牢记性能,这是您越编程越擅长的事情)
-
Exception 是为异常场景设计的,不是为你的业务逻辑设计的。在确定不会引发异常后,您应该实施数据库检查和插入。当异常发生时,您就知道某些事情确实发生了故障。这就是它们存在的原因。恕我直言,你永远不应该依赖异常。他们就是他们的名字所说的:一个例外。
标签: asp.net sql-server asp.net-mvc entity-framework identity