【问题标题】:Best Practice - ASP.NET/Entity Framework [closed]最佳实践 - ASP.NET/Entity Framework [关闭]
【发布时间】: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


【解决方案1】:

除了是一个非常基于意见的问题外,我认为还可以遵循适当的指导方针。

您通常会在添加记录之前在数据库中检查现有记录,还是会依赖抛出的异常,甚至期望给定的参数是相关且有效的。

在我看来,这完全取决于上下文。

对于极高的事务,我会写一个存储过程。

否则它取决于操作的并发性,在这个特定的例子中,我不认为多个人会尝试将同一个人添加到同一个角色,所以异常被最小化并且可以接受。

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    • 2010-10-06
    • 2011-10-28
    相关资源
    最近更新 更多