我的问题围绕着最佳实践发展。
现在我正在使用具有 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);
}
}
除了是一个非常基于意见的问题之外,我认为可以遵循适当的指导方针。
您通常会在添加现有记录之前签入数据库中的现有记录,还是依赖于引发的异常,甚至期望给定的参数是相关且活跃的。
在我看来,这完全取决于上下文。
对于极高的事务,我会编写一个存储过程。
否则,这取决于操作的并发性,在这种特定情况下,我认为不会有多个人尝试将同一个人添加到同一角色,因此例外情况被最小化且可以接受。