C# 存储库应该返回到RESTfulWebAPI的错误代码是什么
当我看微软关于存储库模式的示例时,它当然是一个完全简单的示例,与现实世界的需求无关-一如既往- 存储库Add/Del/Update方法返回Void-nothing- 另一方面,当有人使用我的RESTfulWebAPI时,我想提供如下内容C# 存储库应该返回到RESTfulWebAPI的错误代码是什么,c#,entity-framework,repository-pattern,C#,Entity Framework,Repository Pattern,当我看微软关于存储库模式的示例时,它当然是一个完全简单的示例,与现实世界的需求无关-一如既往- 存储库Add/Del/Update方法返回Void-nothing- 另一方面,当有人使用我的RESTfulWebAPI时,我想提供如下内容 NotFound()如果删除记录没有任何作用 OK()如果删除成功 更新方法也是如此 您在实际项目中使用什么作为存储库的返回类型,以让调用方知道真正发生了什么?有两个主要选项: 将NotFound这样的情况视为例外情况。指定在您要删除的对象不存在的情况下存储库
NotFound()
如果删除记录没有任何作用
OK()
如果删除成功
更新方法也是如此
您在实际项目中使用什么作为存储库的返回类型,以让调用方知道真正发生了什么?有两个主要选项:
DeletePerson
返回NotFound,但如果在使用不同的存储库清理某些相关数据时没有数据,您希望使用不同的返回类型?)public class RepositoryActionResult
{
public int RecordsAffected { get; set; }
}
然后,您可以从存储库方法中进行设置,并适当地处理调用代码的结果,而无需对控制流使用异常
您可以根据自己的需求使这个类变得复杂 如果您问我,RecordsAffected在存储库之外没有用处。如果每行更新3个表,SaveChanges将返回3。更新可能仍然是错误的。我已经这样做了:int-recordsafected=context.SaveChanges()我不喜欢用它来计算表数。。。在错误情况下返回insert实体或null。我最喜欢的第一种方法是将NotFound视为例外。因此,我将创建一个NotFoundException类,并将其与NotFoundExceptionFilterAttribute连接:-)谢谢@伊莉莎:在这种情况下,你可能需要考虑的另一件事是提供一种不抛出异常的方法——也许是<代码> TyDeleTeEe()/Cuth>方法,它返回布尔值,或者如果该项不存在,则不做任何事情。您可能会遇到这样的情况:您不在乎该内容是否已被删除,我不建议在这些情况下捕获和删除异常。顺便说一句。在没有例外的情况下,你会返回什么?无效的对于Create,我必须返回实体-因为新创建的Id-但是对于update/delete/ATTACH/DETACH?最后两个只是一个关系删除实际上是一种HTTP修补程序。@Elisa:是的,如果你想说由于某种原因不起作用的操作都由异常表示,那么你的实际返回类型应该与你不关心这些异常时的返回类型相同。