您是否 return 来自 ASP.Net 核心存储库的 ObjectResult
Do you return an ObjectResult from your repository in ASP.Net Core
在 ASP.NET 核心应用程序中,我在绝大多数控制器路由上使用 Task<IActionResult>
。但是,我也在尝试使用存储库。 NotFound()
或 Ok(ret)
控制器 return 之类的东西在存储库中不可用。
我通过使用这些方法 return 和 Task<ObjectResult>
开始存储库,因为它们可以很好地传递给控制器,但后来我很快发现许多 "normal"我希望不存在。例如,我必须自己制作 CreateObjectResult
、NoContentObjectResult
等...
是否有比 return 更好的类型,以便我的存储库方法可以轻松地支持 returning 数据或适当的错误响应?
理想情况下,存储库应该 return 领域模型以防实施 DDD。在这种情况下,域模型本身映射为实体。
如果未实现 DDD,它应该 return 映射的实体。
存储库应该只关注数据库需求。它不应该处理任何其他问题,如 HTTP、业务逻辑等。因此,它不应该 return ObjectResult
或 DTO 或任何其他不属于数据访问的类型。要了解有关 DTO、实体等术语的更多信息,请参阅 答案。
I'm also trying to use repositories. The things like NotFound()
or Ok(ret)
that a controller would return aren't available in the repository.
他们不应该。使用额外的逻辑在存储库外实现它。;
Is there a better type to return so that my repository methods support easily returning either data or the appropriate error response?
如上所述,return 映射的实体。对于错误,请考虑从存储库中抛出异常。处理调用(控制器)代码中的那些。
以防万一您使用的是完整的 ORM,请查看 答案。
在 ASP.NET 核心应用程序中,我在绝大多数控制器路由上使用 Task<IActionResult>
。但是,我也在尝试使用存储库。 NotFound()
或 Ok(ret)
控制器 return 之类的东西在存储库中不可用。
我通过使用这些方法 return 和 Task<ObjectResult>
开始存储库,因为它们可以很好地传递给控制器,但后来我很快发现许多 "normal"我希望不存在。例如,我必须自己制作 CreateObjectResult
、NoContentObjectResult
等...
是否有比 return 更好的类型,以便我的存储库方法可以轻松地支持 returning 数据或适当的错误响应?
理想情况下,存储库应该 return 领域模型以防实施 DDD。在这种情况下,域模型本身映射为实体。
如果未实现 DDD,它应该 return 映射的实体。
存储库应该只关注数据库需求。它不应该处理任何其他问题,如 HTTP、业务逻辑等。因此,它不应该 return ObjectResult
或 DTO 或任何其他不属于数据访问的类型。要了解有关 DTO、实体等术语的更多信息,请参阅
I'm also trying to use repositories. The things like
NotFound()
orOk(ret)
that a controller would return aren't available in the repository.
他们不应该。使用额外的逻辑在存储库外实现它。;
Is there a better type to return so that my repository methods support easily returning either data or the appropriate error response?
如上所述,return 映射的实体。对于错误,请考虑从存储库中抛出异常。处理调用(控制器)代码中的那些。
以防万一您使用的是完整的 ORM,请查看