C# DB Services C的良好实践是什么#

C# DB Services C的良好实践是什么#,c#,asp.net,C#,Asp.net,我正在ASP.NETMVC中制作web项目。每个控制器调用服务来执行一些操作。让我们来看一个例子 public interface IProjectService { bool ActivateProject(int projectId); //others } 并实现了类 public class ProjectService : IProjectService { private readonly IContext

我正在ASP.NETMVC中制作web项目。每个控制器调用服务来执行一些操作。让我们来看一个例子

 public interface IProjectService
    {
        bool ActivateProject(int projectId);
        //others
    }
并实现了类

 public class ProjectService : IProjectService
    {
        private readonly IContextProvider _contextProvider;

        public ProjectService(IContextProvider contextProvider)
        {
            _contextProvider = contextProvider;
        }

       public bool ActivateProject(int projectId)
        {
            using (var context = _contextProvider.GetContext())
            {
                var project = context.Projects.Where(p => p.ProjectId == projectId).SingleOrDefault();
                project.Status = 1;
                context.SaveChanges();
                return true;
            }
        }
    //others
     }
在本例中,管理员希望激活项目。我在jQuery中进行了验证,所以管理员只能传递projectId

那么现在应该返回什么方法呢? 我应该把它留作空白吗?
假设数据库有错误,那么我应该抛出异常吗?这种操作的实践是什么?

一般来说,您不应该使用异常来处理标准执行流。例外情况用于不应该发生的事情实际发生的情况

也就是说,有一条边界线,异常和返回值非常适合,这只是品味的问题

异常通常会提供更大的灵活性,因为您可以抛出不同的异常类型,并通过一次try/catch来处理它们。它们还提供了更多的信息。布尔值并不能说明发生了什么

如果返回布尔值,则应在方法内部处理异常,至少应将错误详细信息记录在某个位置


我个人会在出现问题时抛出异常,并让调用方处理。

一般来说,您不应该使用异常来处理标准执行流。例外情况用于不应该发生的事情实际发生的情况

也就是说,有一条边界线,异常和返回值非常适合,这只是品味的问题

异常通常会提供更大的灵活性,因为您可以抛出不同的异常类型,并通过一次try/catch来处理它们。它们还提供了更多的信息。布尔值并不能说明发生了什么

如果返回布尔值,则应在方法内部处理异常,至少应将错误详细信息记录在某个位置


我个人会在出现问题时抛出异常,并让调用方处理。

“我在jQuery中进行了验证”-这不是保护web服务的方式。你是什么意思?我的意思是,方法的参数将始终为OK,您永远不能信任用户输入。从jQuery传递值并不意味着有人绕过jQuery直接向您发送数据。验证服务器端,100%的时间。当然我不理解,所以我应该抛出异常还是什么?我不知道在那些情况下“我在jQuery中有验证”是什么做法——这不是保护web服务的方式。你是什么意思?我的意思是,方法的参数将始终为OK,您永远不能信任用户输入。从jQuery传递值并不意味着有人绕过jQuery直接向您发送数据。验证服务器端,100%的时间。当然我不理解,所以我应该抛出异常还是什么?我不知道在这些情况下,什么是实践。你可能错过了问题的“web服务”部分。无法从web服务抛出异常(它将变成一个500响应,其中JSON负载描述了异常),客户机真的无法“处理”这些异常。您可能错过了问题的“web服务”部分。没有办法从web服务抛出异常(它将变成一个500响应,其中JSON负载描述异常),客户机实际上无法“处理”这些异常。